用AppleScript做macOS UI自动化
- 一、定位到System Setting → General → Login Items& Extensions 页面
- 1. 获取页面锚点,以便直接滑动到锚点区域
- 2. 滑动到Extensions 区域
- 二、根据名称找到元素,再点击元素的按钮
- 三、获取元素位置并点击
一、定位到System Setting → General → Login Items& Extensions 页面
1. 获取页面锚点,以便直接滑动到锚点区域
tell application "System Settings"get every anchor of current paneend tell
2. 滑动到Extensions 区域
reveal
命令用于在“系统设置”中显示指定的窗格或部分
anchor
关键字则用于指定窗格内的一个特定部分或标签页。
tell application "System Settings"activatereveal anchor "ExtensionItems" of pane id "com.apple.LoginItems-Settings.extension"
end tell
二、根据名称找到元素,再点击元素的按钮
期望点[Trend Micro Antivirus Extension]的按钮,所以先根据Text 定位到[Trend Micro Antivirus Extension],再找到他同层级的下一个元素并点击
-- 启用辅助功能
tell application "System Events"-- 指定目标应用程序tell process "System Settings"-- 打开目标窗口set frontmost to truedelay 1 -- 给窗口一些时间来加载-- 获取目标窗口set targetWindow to window "Login Items & Extensions"-- 获取目标元素的所有兄弟元素(同层次元素)set siblingElements to UI elements of group 3 of scroll area 1 of group 1 of group 2 of splitter group 1 of group 1 of targetWindow-- 初始化变量set targetElementFound to falseset nextElement to missing value-- 遍历所有同层次元素,找到目标元素并获取其下一个元素repeat with i from 1 to count of siblingElementsset currentElement to item i of siblingElementsif value of currentElement contains "Trend Micro Antivirus Extension" thenset targetElementFound to trueelse if targetElementFound thenset nextElement to currentElementexit repeatend ifend repeat-- 点击目标元素的下一个元素的信息if nextElement is not missing value thenperform action "AXPress" of nextElementelsereturn "not found button"end ifend tell
end tell
三、获取元素位置并点击
通过UI Browser 可以很快得到element
这里拿到元素坐标,然后用pyautogui.click()
,具体见上一篇
AppleScript点击事件无效的问题排查记录