You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AppleScript访问系统弹窗并填入对应信息?

系统弹窗AppleScript定位与操作解决方案

你之前使用的脚本存在两个核心缺陷:一是仅匹配每个进程的首个窗口,而系统弹窗通常以附属表单、辅助窗口的形式挂载在进程下,不会被识别为window 1;二是role description是本地化字段,不同语言的系统返回值不同,稳定性远低于原生AX角色属性。
下面是可行的解决方法:

方案1:优化定位逻辑,遍历所有UI元素匹配系统弹窗

使用AX角色属性匹配,同时覆盖窗口、表单两类弹窗形态,避免漏匹配:

tell application "System Events"
	set systemDialogs to {}
	repeat with proc in every application process
		-- 同时遍历窗口和附属表单两类弹窗载体
		repeat with targetElem in (every window of proc) & (every sheet of proc)
			try
				if (value of attribute "AXRole" of targetElem is "AXDialog") or ¬
					(value of attribute "AXSubrole" of targetElem is "AXSystemDialog") then
					copy (name of proc & " | " & name of targetElem) to end of systemDialogs
				end if
			end try
		end repeat
	end repeat
	return systemDialogs
end tell

运行上述脚本即可输出所有系统弹窗的所属进程名和弹窗名称,快速定位目标弹窗。

方案2:定位后操作弹窗填写内容的示例

大部分系统级权限、提示弹窗都由CoreServicesUIAgent进程承载,定位到所属进程后可以用以下脚本完成填写、提交操作:

tell application "System Events"
	tell process "替换为你匹配到的进程名,比如CoreServicesUIAgent"
		tell window "替换为你匹配到的弹窗名称,也可以用序号比如window 1"
			-- 为第一个文本输入框填充内容
			set value of text field 1 to "需要填写的目标内容"
			-- 点击确认按钮,也可以用按钮名称匹配,比如button "允许"、button "确认"
			click button 1
		end tell
	end tell
end tell

排查方案

如果依然无法定位到弹窗,可以按以下步骤操作:

  • 先给脚本编辑器、运行脚本的工具赋予辅助功能权限:打开「系统设置」→「隐私与安全性」→「辅助功能」,勾选对应应用的权限,无权限时System Events无法读取UI元素
  • 使用系统自带的UI元素检查器获取准确路径:打开「脚本编辑器」的偏好设置,勾选「在菜单栏中显示脚本菜单」,选择「显示UI元素检查器」,hover到目标弹窗上即可直接查看它的所属进程、层级结构、AX属性,直接拿到精准的定位参数

内容的提问来源于stack exchange,提问作者CRRavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:00:05