如何使用 AppleScript 自动单击应用程序窗口中的按钮?

如何使用 AppleScript 自动单击应用程序窗口中的按钮?

假设我想使用 AppleScript 单击窗口内某处出现的按钮。click button可以,但您必须知道您想按哪个按钮。


例如:扫描有点麻烦,因为你总是要等待扫描仪完成,然后切换到 Image Capture.app,然后单击扫描再次。

所以,我想自动点击此处的按钮……

在此处输入图片描述

好吧,我认为这相对容易,但一开始我只能做到这些:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of window "Image Capture"
    end tell
end tell

当然,按钮埋得比这更深(即在某个拆分组中)。

随着可访问性检查器我知道它在哪里,但我真的必须沿着 UI 元素树向下查找按钮吗?有没有什么捷径?如果没有,我遗漏了什么click button "Scan" of window "Image Capture"

在此处输入图片描述

更一般的情况:在 UI 元素层次结构中哪里可以找到按钮?

答案1

如果按钮不可直接使用,您可能需要猜测。

High Sierra 中有效的是:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
    end tell
end tell

在旧版 macOS 上,group 1可能必须使用。

另一个解决方法是激活窗口并按空格键:

tell application "Image Capture"
    activate
    tell application "System Events" to key code 49
end tell

您实际上可以尝试通过运行以下命令来关闭它:

UI elements of window 1
UI elements of splitter group 1 of window 1
UI elements of group 1 of splitter group 1 of window 1

或者,正如@Lri 在评论中所说:

properties of UI elements of window 1
properties of UI elements of UI elements of window 1

这将向您显示所包含元素的列表,您可以从中猜测。

答案2

这对我有用:

entire contents of window 1

当这个出现问题时:

UI elements of window 1

答案3

在 MacOS High Sierra 10.13.6 和 Image Capture 7.0 中,上述答案经过以下轻微修改后生效:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
    end tell
end tell

相关内容