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

Jos*_*hua 3 safari macos applescript automator

我想使用 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
Run Code Online (Sandbox Code Playgroud)

我希望当我位于浏览器中的特定位置时使用键盘快捷键来执行它。但是,当我这样做时,我遇到了权限问题:

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"
Run Code Online (Sandbox Code Playgroud)

System Prefrences -> Security & Privacy -> Privacy -> Accessibility“我已允许Automator和”中AppleScript Utility,在选项卡下 Automation,我已允许System EventsSafari。

如果我也允许 Safari 进入,我可以让它工作,至少是暂时的,Accessibility但这似乎太过激烈,而且让 Safari 始终拥有完全控制权只是偶尔运行一个脚本存在安全风险。

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

Jer*_*ton 5

我\xe2\x80\x99m猜测你\xe2\x80\x99所做的是设置一个快速操作,然后给该快速操作一个在\xe2\x80\x9cServices\xe2\x80\x9d下的快捷方式\xe2\x80 \x9cKeyboard:系统偏好设置中的快捷方式\xe2\x80\x9d。我能够通过这样做来重复问题:尝试运行脚本需要 Safari 本身有权访问 \xe2\x80\x9ccontrol your computer\xe2\x80\x9d。如果这不是您\xe2\x80\x99 所做的,那么此解决方案应该仍然有效,但您可能还想更新您的问题,以防有更好的解决方案可用。

\n

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

\n
    \n
  1. 使用 Automator(或脚本编辑器)按照上述步骤创建应用程序,并添加作为第一步tell application "Safari" to activate。您需要执行此步骤,因为打开应用程序会将焦点从 Safari 上移开。
  2. \n
\n

首先,使用您想要执行的步骤创建应用程序。

\n
    \n
  1. 保存此应用程序。(如果使用 Automator,则在开始创建脚本时告诉 Automator 它\xe2\x80\x99 是一个应用程序;如果使用脚本编辑器,则在保存脚本时告诉脚本编辑器它\xe2\x80\x99 是一个应用程序。 )

    \n
  2. \n
  3. 使用 Automator 创建快速操作。为其指定操作 \xe2\x80\x9cLaunch Application\xe2\x80\x9d 并告诉它启动您刚刚创建的应用程序。

    \n
  4. \n
\n

创建一个服务来启动应用程序。

\n
    \n
  1. 将您在步骤 2 中创建的应用程序拖到 System Preferences\xe2\x80\x99s \xe2\x80\x9cSecurity & Privacy\xe2\x80\x9d 设置中的 \xe2\x80\x9cAccessibility\xe2\x80\x9d 列表中。(您可能必须解锁这些设置才能允许更改。)当您将其拖入时,应该会自动检查它,但如果没有,您可以检查它。
  2. \n
\n

通过拖放将其添加到辅助功能列表中。

\n
    \n
  1. 在系统偏好设置的 \xe2\x80\x9cKeyboard:Shortcuts\xe2\x80\x9d 设置的 \xe2\x80\x9cServices\xe2\x80\x9d 列表中,应列出您在步骤 3 中创建的快速操作。给它一个键盘快捷键。
  2. \n
\n

并给它一个键盘快捷键。

\n

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

\n