我尝试使用弹出窗口选择确定以使用Apple脚本缩放屏幕。
有谁知道我可以添加到此脚本中以允许我单击确定?
Apple Script:
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
click radio button "Scaled" of radio group 1 of tab group 1
click radio button 1 of radio group 1 of group 1 of tab group 1
(* Trying to click the ok button here *)
delay 1
click ((pop up buttons of sheet 1 of window 1) whose description is "OK")
end tell
quit application "System Preferences"
或者更确切地说,当我在屏幕上访问时,有人知道一个可信的应用程序,它可以以图形方式打印出UI的标签,这样当我说:&#34时我会知道该使用什么;告诉 UIName "?
感谢。
答案 0 :(得分:2)
由于您无论如何都在使用系统事件,并且默认情况下选中了有问题的按钮(以蓝色突出显示),只需确保首选项窗格处于焦点并使用< em>系统事件以点击 return 键:
tell application "System Events" to keystroke return
它快速,简单,并且省去了在层次结构中识别UI元素的麻烦。缺点是首选项窗格具有焦点,如果它在收到键击之前失去焦点,则脚本的其余部分将失败。
关于GUI对象层次结构中UI元素的识别,你得到的问题按钮的类及其描述都是错误的。
“OK”按钮的引用方式如下:
tell application "System Events" to tell process "System Preferences" ¬
to get button "OK" of sheet 1 of window "Built-in Retina Display"
(window 1
也没关系)。您可以使用whose
过滤器来定位它,这样做(通过系统事件和系统偏好设置)过程):
get buttons of sheet 1 of window 1 whose name is "OK"
但所有这一切都要求AppleScript搜索我们知道其名称的按钮,然后烦人地将结果作为列表返回给我们(通过请求first button of sheet 1...
可以展平列表结构。)
但是,我们确实知道它的名字,而且它只有一个,所以我们可以直接引用它。
作为侧边栏,如果您快速运行此命令:
get the properties of button "OK" of sheet 1 of window "Built-in Retina Display"
你将能够看到它的描述仅仅是“按钮”,这不是你所希望的。现在运行以下命令:
get the actions of button "OK" of sheet 1 of window "Built-in Retina Display"
显示它有一个可用的操作AXPress
(这相当于鼠标点击)。
因此,最后,以比击中返回键更令人满意的方式单击按钮的方式如下所示:
tell application "System Events" to tell process "System Preferences" ¬
to tell button "OK" of sheet 1 of window "Built-in Retina Display" ¬
to perform action "AXPress"
为了在屏幕上浏览GUI对象,我偶尔会使用Apple的 XCode 附带的辅助功能检查器。它有点模糊,虽然不方便地讨论它引用对象的名称和AppleScript所做的名称之间的一些差异(它们也是非常微妙的差异,但足以阻止你的脚本工作并让你陷入狂热几周)。
所以,实际上,我只是在脚本编辑器中以编程方式探索它。
我为解决您的问题所做的是打开相关的窗格和对话框,然后系统地将系统偏好设置过程告诉get UI elements
;然后get buttons of UI elements
;然后get buttons of UI elements of UI elements
,当我看到一对按钮返回时停止,称为“确定”和“取消”。它可能是痛苦的,但它会给你正确的参考。
还有其他方法,但我会超出这个问题的范围。