如何用AppleScript自动化非标准应用并访问其主内容?
解决System Events无法识别非标准应用主内容的方法
如果System Events只能识别到应用的菜单栏,说明这款非标准应用大概率没实现AppleScript accessibility支持,或是采用了非原生UI框架(比如特定配置的Electron、Qt),可以试试以下几种方案:
用绝对坐标点击(绕过UI元素识别)
你之前写的click at {500,500}本质是坐标点击,但返回结果指向菜单栏,可能是应用窗口没正确前置。先确保窗口激活并获得焦点,再执行点击:activate application "Foo" delay 0.5 -- 给应用留足激活时间 tell application "System Events" tell process "Foo" set frontmost to true click at {500, 500} end tell end tell注意这里的坐标是主屏幕左上角为原点的全局坐标,若应用在副屏,需要对应调整数值。
借助第三方工具模拟硬件级输入
如果坐标点击仍受限于System Events的识别逻辑,可以用cliclick这类命令行工具(需提前安装),直接模拟硬件点击,不受应用UI框架限制:# 先激活目标应用 osascript -e 'activate application "Foo"' && sleep 0.5 # 点击全局坐标(500,500) cliclick c:500,500检查辅助功能权限
确认System Events已加入系统偏好设置「安全性与隐私」→「隐私」→「辅助功能」列表并勾选,权限未生效时可尝试重启System Events或目标应用。尝试直接定位窗口元素
有些应用的UI Elements仅返回菜单栏,但窗口本身可被识别,试试定位窗口后再执行相对坐标点击:activate application "Foo" delay 0.5 tell application "System Events" tell process "Foo" tell window 1 click at {500, 500} -- 此处坐标为窗口内部的相对坐标 end tell end tell end tell
内容的提问来源于stack exchange,提问作者Jesse Beder
相关产品推荐
相关产品推荐

