简单的GUI脚本问题

时间:2010-08-13 09:41:12

标签: user-interface applescript

我正在尝试这个简单的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

1 个答案:

答案 0 :(得分:1)

哇,这太奇怪了。您的脚本破坏了AppleScript编辑器。运行你的脚本后,它不工作...我试图重新编译脚本,然后你发布的错误开始显示。所以你的代码以某种方式导致AppleScript编辑器中断,从而导致错误。我不得不退出并重新启动AppleScript Editor以使其再次运行。

我使用了应用程序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脚本和击键的问题之一是有时脚本过快而且这些技术无法跟上程序的速度,因此它们经常出错。发生这种情况时,您需要使用较小的延迟来减慢脚本速度,以使接口能够跟上脚本。