Macos Applescript系统首选项自动化
我正在研究自动设置系统首选项,但我有一个问题。此代码应选择Wi-Fi选项卡,但滚动区域1不存在,除非我手动单击属于滚动区域的任何元素。我尝试用许多外部程序模拟点击,但即使这样,我也无法访问滚动区域Macos Applescript系统首选项自动化,macos,automation,applescript,system,ui-automation,Macos,Automation,Applescript,System,Ui Automation,我正在研究自动设置系统首选项,但我有一个问题。此代码应选择Wi-Fi选项卡,但滚动区域1不存在,除非我手动单击属于滚动区域的任何元素。我尝试用许多外部程序模拟点击,但即使这样,我也无法访问滚动区域 tell application "System Preferences" activate reveal pane id "com.apple.preference.dock" end tell tell application "S
tell application "System Preferences"
activate
reveal pane id "com.apple.preference.dock"
end tell
tell application "System Events" to tell application process "System Preferences"
delay 1
tell scroll area 1 of window 1
select row 3 of outline 1
end tell
end tell
是否有其他方法更改停靠和菜单栏设置或仅访问滚动区域项目
编辑:最终目标是从菜单栏中隐藏Wi-Fi图标
最终目标是从菜单栏中隐藏Wi-Fi图标
macOS Big-Sur中系统首选项的UI脚本已经成为一场噩梦,因为在以前版本的macOS中使用的许多方法在macOS Big-Sur中已不再适用。当使用Xcode的可访问性检查器时,许多UI元素报告父元素不将元素报告为其子元素之一,这使得无法与它们通信。或者有些代码可能一次工作,下一次就不行了。我写了一些打开Wi-Fi的代码,并单击了“在菜单栏中显示”复选框。它工作了几次,但现在没有
我写的原代码,它是零星工作的,我不会发布,但是,下面的例子Apple Script代码在MaOS大瑟尔11.4下一直在测试,尽管它是我认为的KLUDY UI脚本,因为它在屏幕上是可见的,很容易由于时序问题而失败。或者,如果层次化UI元素结构因macOS更新/升级而改变
下面显示的示例AppleScript代码在macOS Big Sur 11.4下的脚本编辑器中进行了测试,系统首选项中的语言和区域设置设置设置为English US-Primary,在没有问题1的情况下为我工作 1假设系统首选项>安全和隐私>隐私中的必要和适当设置已根据需要设置/解决。 此脚本要求在“系统首选项”>“键盘”>“快捷键”选项卡上选中“使用键盘导航在控件之间移动焦点”复选框,并且按照编码,脚本将检查其状态,并根据其当前状态根据需要切换复选框 此脚本还首先检查Wi-Fi图标是否显示在菜单栏上,如果未显示,则停止执行脚本,因为其目的是仅在菜单栏上显示时才执行 AppleScript代码示例: -获取目标.plist文件的完全限定POSIX路径名。 将PropertyListFilePath设置为—— 的POSIX路径 以字符串形式从用户域指向首选项的路径& com.apple.controlcenter.plist -获取“NSStatusItem Visible WiFi”的值,以确定 -Wi-Fi图标显示在菜单栏上,如果未显示,则停止 -脚本的执行,因为它的目的是仅在脚本执行时才执行。 将应用程序系统事件告知 将PropertyList文件路径告知属性列表文件 将| Wi-Fi菜单栏图标状态|设置为¨的值 属性列表项—— NSStatusItem可视WiFi 如果| Wi-Fi菜单栏图标状态|为false,则返回 -检查系统首选项是否正确 -正在运行,如果是,则关闭它。 - -这样做是为了脚本不会失败 -如果它正在运行,并且模式表正在运行 -显示,因此使用“killall” -如果“退出”失败,那么“退出”将失败。 - -这样做也是为了允许默认行为 -从干净的事件中可以预测。 如果运行应用程序系统首选项,则 尝试 告诉应用程序系统首选项退出 论错误 是否执行shell脚本终止所有“系统首选项” 结束尝试 延迟0.1 如果结束 -请确保系统首选项未在之前运行 -再次打开它。否则可能会有问题 -当它实际关闭时尝试重新打开时。 运行应用程序系统首选项时重复此操作 延迟0.1 结束重复 -获取目标.plist文件的完全限定POSIX路径名。 将PropertyListFilePath设置为—— 的POSIX路径 以字符串形式从用户域指向首选项的路径& .GlobalPreferences.plist -获取AppleKeyboardUIMode的值以确定 -'使用键盘导航在控件之间移动焦点' -选中系统首选项上的复选框> -键盘>快捷键选项卡。 将应用程序系统事件告知 将PropertyList文件路径告知属性列表文件 将键盘导航设置为¨的值 属性列表项AppleKeyboardUIMode 如果keyboardNavigation=0,则 -选中复选框。 我的开关键盘导航 如果结束 -打开系统首选项至停靠和菜单栏窗格。 - -此UI脚本需要它可见,因此需要使用activate命令。 告诉应用程序系统首选项 使活动 显示窗格id com.apple.preference.dock 结束语 告诉应用程序系统事件 将i设置为0 重复此操作,直到存在窗口停靠和菜单栏 应用程序处理系统优先 法国 延迟0.1 将i设置为i+1 如果我≥ 30然后返回 结束重复 结束语 -选项卡,然后取消选中“在菜单栏中显示”复选框。 告诉应用程序系统事件 键代码48-制表键 延迟0.2 键代码125-向下箭头键 延迟0.2 键代码48-制表键 延迟0.2 键代码49-空格键 延迟0.1 结束语 如果keyboardNavigation=0,则 -如果需要,请取消选中复选框 -以前未检查。 我的开关键盘导航 如果结束 延迟0.2 告诉应用程序系统首选项退出 -处理者 -切换复选框:“使用键盘导航” -在控件之间移动焦点的步骤 关于切换键盘导航 告诉应用程序系统首选项 使活动 露锚短刺 窗格id com.apple.preference.keyboard 结束语 告诉应用程序系统事件 告诉前窗—— 应用程序进程系统首选项 将i设置为0 重复此操作,直到选项卡组1的复选框1存在 延迟0.1 将i设置为i+1 如果我≥ 30然后返回 结束重复 单击选项卡组1的复选框1 结束语 结束语 结束切换键盘导航 注: 如果未选中“使用键盘导航在控件之间移动焦点”复选框的正常状态,则不要立即背靠背运行脚本,因为用户全局首选项文件中属性列表项AppleKeyboardUIMode的值需要一两秒钟才能更新更改。我提到这一点主要是为了测试,而不是在正常的生产使用中,因为这不应该是一个问题 注意:示例AppleScript代码只是,任何包含的错误处理都不包含任何其他适当的错误处理。用户有责任根据需要添加任何适当的错误处理。请查看中的语句和语句。另见。此外,在适当的情况下,可能需要在事件之间使用命令,例如延迟0.5,延迟值设置适当