Macos 在Safari–;中运行AppleScript时出现自动机权限错误;替代方案和安全风险?

Macos 在Safari–;中运行AppleScript时出现自动机权限错误;替代方案和安全风险?,macos,safari,applescript,automator,Macos,Safari,Applescript,Automator,我想使用Automator和AppleScript在Safari中填写表单。我有一个功能脚本,看起来像这个玩具示例: on run {} tell application "System Events" to keystroke "Hello" tell application "System Events" to keystroke tab tell application "System Event

我想使用Automator和AppleScript在Safari中填写表单。我有一个功能脚本,看起来像这个玩具示例:

on run {}
    tell application "System Events" to keystroke "Hello"
    tell application "System Events" to keystroke tab
    tell application "System Events" to keystroke "World"
end run
当我在浏览器中的某个特定点时,我希望用键盘快捷键执行它。但是,在执行此操作时,我会遇到权限问题:

The action "Run AppleSCript" encountered an error: 
"System Events got an error: Automator Workflow Runner 
(WorkflowServiceRunner, my_script_name) is not allowed to send keystrokes"
系统优先->安全和隐私->隐私->可访问性
中,我允许使用
自动程序
AppleScript实用程序
,并且在
自动化
选项卡下,我允许Safari使用
系统事件

我可以让它工作,至少是暂时的,如果我允许Safari在
可访问性中运行,但是让Safari始终拥有完全控制权,只是为了不时运行脚本,这似乎太激烈了,而且存在安全风险


我应该如何处理这个问题?我希望脚本易于使用,并且不希望每次都进入设置来临时允许Safari。或者这也可以自动化?有没有一种完全不同于Automator和AppleScript的方法可以让我以一种更加用户友好和安全的方式完成这项工作?基本上,我想做一些类似于AutoHotKey在Windows中所能做的事情。

我猜您所做的是设置一个快速操作,然后在系统首选项的“键盘:快捷键”中的“服务”下为该快速操作指定一个快捷键。我可以通过这样做来复制问题:尝试运行脚本需要Safari本身具有“控制您的计算机”的访问权限。如果您没有这样做,这个解决方案应该仍然有效,但您可能还需要更新您的问题,以防有更好的解决方案可用

你能做的就是使用重定向。创建一个可以被授予控制计算机权限的应用程序,然后创建一个将启动该应用程序的服务

  • 使用Automator(或脚本编辑器)创建具有上述步骤的应用程序,第一步添加
    告诉应用程序“Safari”激活
    。你需要这一步,因为打开应用程序会让Safari失去注意力
  • 保存此应用程序。(如果使用Automator,则在开始创建脚本时告诉Automator它是一个应用程序;如果使用脚本编辑器,则在保存脚本时告诉脚本编辑器它是一个应用程序。)

  • 使用Automator创建快速操作。给它一个动作“启动应用程序”,并告诉它启动您刚刚创建的应用程序

  • 将您在步骤2中创建的应用程序拖动到系统首选项的“安全和隐私”设置中的“可访问性”列表中。(您可能必须解锁这些设置以允许更改。)当您将其拖动进来时,应该自动选中它,但如果没有,您可以选中它
  • 在系统首选项“键盘:快捷键”设置的“服务”列表中,应列出您在步骤3中创建的快速操作。给它一个键盘快捷键

  • 此时,您应该能够使用键盘快捷键运行应用程序,并且只有该应用程序才需要拥有控制计算机的权限。

    感谢您的出色回答,您的假设是正确的。我对Automator是新手,似乎忽略了一些重要的细节。只有一个问题,如果使用时打开了几个Safari窗口,“激活”命令是否存在出错的风险?我假设用户在运行命令时打开了正确的选项卡/窗口,而不是为此目的。激活就像在跳出标签后跳回Safari一样。Safari保持在离开时的任何状态(可能会禁止JavaScript在失去焦点时执行某些操作)。由于在本例中,Safari失去焦点的唯一原因是击键启动了一个新的应用程序,因此重新聚焦到Safari将返回到中,并在相同的顶部窗口中选择相同的位置。非常好。好了,谢谢。最后,我不得不将应用程序和快速操作添加到“可访问性”列表中,否则就如前面所述。哦,如果在我这种情况下,有人在保存应用程序时出现签名错误,您需要遵循以下说明: