我正在尝试这个简单的GUI脚本来打开Safari的新窗口:
tell application "Safari"
activate
end tell
tell application "System Events"
tell process "Safari"
try
tell menu bar 1
tell menu bar item 3
click menu item 1
end tell
end tell
on error theError
display dialog ("An error occurred while performing requested action" & theError) buttons "OK" default button "OK"
end try
end tell
end tell
但它提供了此错误消息:
预期结束但发现“”“
有人可以建议我在哪里错吗?
谢谢,
Miraaj
答案 0 :(得分:1)
我使用了应用程序UI浏览器并发现了问题。您对菜单项的引用是错误的。那里有一个我们看不到的额外菜单......你没有参考那个额外的菜单。这是gui脚本的问题。即使gui脚本工作,它也可能会在应用程序更新时在将来某个日期中断。因此,如果可能的话,请避免使用gui脚本。
无论如何,这是您的代码应该是什么样的......
tell application "Safari"
activate
end tell
tell application "System Events"
tell process "Safari"
try
tell menu bar 1
tell menu bar item 3
click menu item 1 of menu 1
end tell
end tell
on error theError
display dialog ("An error occurred while performing requested action " & theError) buttons "OK" default button "OK"
end try
end tell
end tell
修改强> 正如我在下面的评论中提到的,如果你无法从应用程序的字典中找到本机命令,那么下一个最可靠的方法是使用键盘快捷键。大多数菜单都有它们。例如,如果我想在窗口中打开一个新选项卡,该菜单项具有键盘快捷键命令-t。所以我们可以像这样使用它。请注意,有一个本机命令可以在不使用击键的情况下打开新选项卡,我只是将其作为示例显示。
tell application "Safari" to activate
tell application "System Events"
keystroke "t" using command down
end tell
end
键盘命令通常不会在应用程序更新之间发生变化,而gui命令通常会这样做,因为程序员在更新中重新设计了他们的界面......当发生这种情况时,gui脚本会变得混乱。使用gui脚本和击键的问题之一是有时脚本过快而且这些技术无法跟上程序的速度,因此它们经常出错。发生这种情况时,您需要使用较小的延迟来减慢脚本速度,以使接口能够跟上脚本。