使用AppleScript导航菜单栏项

时间:2018-06-18 21:31:37

标签: macos applescript hang menubar

我制作了一个AppleScript与菜单栏项目(NordVPN)进行交互。基本上,它点击项目,选择连接或断开连接,就是这样。

在开发中,我在发现here

的回复中遵循了一些建议

它工作了几次,但现在它只是挂起并保持“运行”。什么都没发生。我想知道忽略响应是否是一个问题?这样做是为了防止点击之间延迟5秒。或者两次尝试是否会引起问题?我正在尝试确保脚本运行,无论是“连接”还是“断开连接”。

任何建议都有帮助。如果有人建议更好的方法来做到这一点,我会很感激。感谢

以下是代码:

ignoring application responses
tell application "System Events" to tell process "NordVPN IKE"
    click menu bar item 1 of menu bar 2
end tell
end ignoring
do shell script "killall System\\ Events"
delay 0.1
tell application "System Events" to tell process "NordVPN IKE"
tell menu bar item 1 of menu bar 2
    try
        click menu item "Connect" of menu 1
    end try
    try
        click menu item "Disconnect" of menu 1
    end try
end tell
end tell

编辑:现在又重新开始了。它似乎在某些时候有效...但我无法弄清楚为什么它会在其他时间停止工作。

编辑2:当Mac进入睡眠状态时,会出现问题。当我将其唤醒并尝试运行脚本时,它会挂起。但是,如果我手动单击菜单栏项然后运行脚本,它将工作。

1 个答案:

答案 0 :(得分:0)

这对我来说使用最新版本的macOS high Sierra。也许这段代码对您来说会更好一些。

set disconnectExists to false
set connectExists to false

ignoring application responses
    tell application "System Events"
        launch application "NordVPN IKE"
        delay 1
        click menu bar item 1 of menu bar 2 of application process "NordVPN IKE"
    end tell
end ignoring
do shell script "killall System\\ Events"
tell application "System Events"
    repeat until disconnectExists or connectExists is true
        set disconnectExists to menu item "Disconnect" of menu 1 of menu bar item 1 of menu bar 2 ¬
            of application process "NordVPN IKE" exists
        set connectExists to menu item "Connect" of menu 1 of menu bar item 1 of menu bar 2 ¬
            of application process "NordVPN IKE" exists
    end repeat
    try
        if connectExists is true then
            delay 0.2
            click menu item "Connect" of menu 1 of menu bar item 1 of menu bar 2 of ¬
                application process "NordVPN IKE"
        else if disconnectExists is true then
            delay 0.2
            click menu item "Disconnect" of menu 1 of menu bar item 1 of menu bar 2 of ¬
                application process "NordVPN IKE"
        end if
    end try
end tell