applescript点击菜单栏选项

问题描述 投票:0回答:2

我想创建一个 AppleScript 来单击菜单,但我无法使用我使用的脚本,这是我想要的菜单:

ELEMENT :
 Role : menu item
 Title: "sign in As..."
 Description :
 Help:
 Application: SytemUIServer

ELEMENT PATCH (starting at leaf element):
 menu Item "Sign in As..." (menu item 12)
  menu (menu 1)
   menu extra (menu bar item 2)
    menu bar (menu bar 1)
      application "SystemUIServer"

所以我做了一些脚本,最后一个是

ignoring application responses
    tell application "System Events" to tell process "SystemUIServer"
        click menu bar item 2 of menu bar 1
    end tell
end ignoring
do shell script "killall System\\ Events"
delay 0.1
tell application "System Events" to tell process "SystemUIServer"
    tell menu item 12 of menu 1 of menu bar item 2 of menu bar 1
        click
    end tell
end tell

我也意识到位置可以改变(有时我想点击的项目是菜单项 12,有时是 10 等)

select applescript menubar
2个回答
5
投票

在您的问题中,您没有指定菜单栏项目的名称和拥有菜单栏项目的应用程序的名称。这就是问题所在。

首先,

SystemUIServer
仅运行OS X本机的菜单栏项目/图标。要查看它运行的图标,请在
Script Editor
中分别执行这三行。

1)

tell application "System Events" to tell process "SystemUIServer" ¬
to number of menu bars

2)

tell application "System Events" to tell process "SystemUIServer" ¬
to value of attribute "AXDescription" of menu bar items of menu bar 1

3)

tell application "System Events" to tell process "SystemUIServer" ¬
to title of menu bar items of menu bar 2

结果应该类似于:

1)

2

2)

{"Wi-Fi, four of four bars, with WiFiName.", "Battery: Charged ", "Clock"}

3)

{"Notification Center", missing value}

第三方应用程序以及 Spotlight 可以管理自己的菜单栏项目/图标。聚光灯例如:

tell application "System Events" to tell process "Spotlight" ¬
to title of menu bar items of menu bar 1

这将为您提供:

{"Spotlight"}

如果您有

Caffeine

tell application "System Events" to tell process "Caffeine" ¬
to title of menu bar items of menu bar 1

你得到:

{missing value}
,因为它的程序员没有费心命名该项目。

因此,如果这是您尝试编写脚本的第三方菜单栏项目,则它不在

SystemUIServer
中。如果您仅引用菜单栏项目的位置而不是其名称,则无法每次都可靠地单击它。

McUsr 插入了这一行,以便保存必须至少有 6 个字符的编辑。


0
投票

我必须做类似的脚本编写,这对我有用,尽管它不尊重层次结构(实际上是

tell application "System Events" to tell process "FortiTray"
    repeat
        try
            click menu item "Connect to XYZ" of menu 1 of menu bar 1
        end try
        delay 2 -- = Time to wait until next check in seconds
    end repeat
end tell

fartheraway给出的方法对我来说并没有真正起作用,信息不够详细,真正有帮助的是使用GUI检查器

© www.soinside.com 2019 - 2024. All rights reserved.