我这样做:
tell application "System Events" to click button "Reply" of window 1 of process "Notification Center"
Run Code Online (Sandbox Code Playgroud)
如果没有窗口,会出现异常.所以我尝试了这个:
if exists (window 1 of process "Notification Center") then
tell application "System Events" to click button "Reply" of window 1 of process "Notification Center"
end if
Run Code Online (Sandbox Code Playgroud)
但似乎AppleScript不会window 1 of process在某种情况下发生.我怎么能做到这一点?
首先,一个简单的测试表明,AppleScript的可以做window 1 of process的条件.我用它测试了它:
tell application "System Events"
if exists (window 1 of process "Safari") then
display dialog "Found window 1"
end if
end tell
Run Code Online (Sandbox Code Playgroud)
如果在Safari中打开了任何窗口,它将显示对话框窗口,否则将不显示.所以问题出在其他地方.
事实上,当我输入这个时,会出现一个通知让我知道我可以参观一下"OS X优胜美地的新功能",所以我把它作为一个机会跑了:
tell application "System Events"
if exists (window 1 of process "Notification Center") then
display dialog "Found window 1"
end if
end tell
Run Code Online (Sandbox Code Playgroud)
它确实显示了对话框; 我按下了关闭通知后,相同的脚本并没有检测到一个窗口,然后显示对话框.
这是一个脚本,它将创建自己的通知窗口,然后尝试检测它:
display notification "Hello"
--without a delay, this script will not immediately notice the window
delay 1
tell application "System Events"
if exists (window 1 of process "Notification Center") then
display dialog "Found window 1"
end if
end tell
Run Code Online (Sandbox Code Playgroud)
如果您删除或注释掉该delay 1行,在我写入此限定测试时,它将不会检测到存在该窗口.
这让我怀疑你试图与之交谈的过程不是通知中心,或者更有可能的是,你试图过快地与它交谈.
如果您自己创建通知,或者在显示通知后立即对其进行响应,则可能需要延迟才能检测到通知.(如果期望通知窗口出现和实际出现之间的时间是不确定的,则可能需要将延迟和条件放入循环中.)
当你说"AppleScript不做"时,你的意思是什么?它是否在该行上给出错误,或者它是否仅检测到窗口?
| 归档时间: |
|
| 查看次数: |
5464 次 |
| 最近记录: |