var*_*zan 8 macos applescript jenkins
在OS X的早期版本中,要允许AppleScript运行,您需要在"系统偏好设置"的"辅助功能"面板中选中"启用辅助设备访问".
对于Mavericks,现在这是一个按照安全和隐私 - >辅助功能启用的每个应用程序设置.如果从Jenkins任务中使用osascript从命令行运行脚本,如何启用辅助访问?据我所知,当时没有GUI任务授权; 我没有要求权限的消息对话框.我在Jenkins输出中得到的错误消息是:
take_screenshot_iossim.sh:246:303: execution error: System Events got an error: osascript is not allowed assistive access. (-1719)
Run Code Online (Sandbox Code Playgroud)
我还尝试将所有应用程序添加到权限对话框,仍然收到权限被拒绝错误.
问题
如果我理解正确,您希望从命令行启用GUI脚本.
解
我相信您需要使用以下代码从AppleScript中启用GUI脚本.然后可以从命令行执行该脚本.您可能希望根据需要排除显示对话框 - 此脚本仅显示对话框以确认GUI设置已激活.
if enabledGUISCripting(true) then
-- GUI Scripting statements go here
display dialog "GUI Scripting is enabled"
else
--non-GUI scripting statements go here
display dialog "GUI Scripting is disabled"
end if
on enabledGUISCripting(switch)
tell application "System Events"
activate
if not (UI elements enabled) then set (UI elements enabled) to true
return (UI elements enabled)
end tell
end enabledGUISCripting
Run Code Online (Sandbox Code Playgroud)
关键部分是:
tell application "System Events"
activate
if not (UI elements enabled) then set (UI elements enabled) to true
end tell
Run Code Online (Sandbox Code Playgroud)
您可以将上面提到的关键部分组合到一个文件中,并告诉osascript使用以下命令执行它:
osascript file.scpt
Run Code Online (Sandbox Code Playgroud)
如果你想在一行上发送osascript多个命令而不是使用脚本文件,你可以尝试(注意每个命令多个-e标志):
osascript -e “line 1? -e “line 2? -e “line 3?
Run Code Online (Sandbox Code Playgroud)
您可能希望使用sudo运行此操作(如果需要):
如果从终端运行此类脚本时出现此错误,则需要在隐私首选项中启用终端的可访问性(Mavericks,请参见下图)
execution error: System Events got an error: Can’t set UI elements enabled of application to true. (-10006)
Run Code Online (Sandbox Code Playgroud)

系统偏好设置>安全和隐私>辅助功能(单击以启用终端)
小智 1
我通过使用 JNLP 而不是 SSH 启动 jenkins 从设备来解决这个问题。您可以在 jenkins master 上的从节点设置中进行设置。
为了进行设置,我创建了一个自动化脚本,该脚本在登录时运行,以便詹金斯奴隶以真实用户身份运行。
curl -o slave.jar http://server:8080/jnlpJars/slave.jar && java -jar slave.jar -jnlpUrl http://server:8080/computer/<slaveName>/slave-agent.jnlp -secret <secret from the node settings on master>
Run Code Online (Sandbox Code Playgroud)
这会导致 osx 为 automator 脚本弹出一个启用应用程序访问辅助设备的弹出窗口,然后允许它访问所有内容。
对我来说,这不是一个完整的解决方案,因为我遇到的 JNLP 从站离线问题比 SSH 启动的从站更多,这就是我发现这个问题的方式:D
| 归档时间: |
|
| 查看次数: |
4668 次 |
| 最近记录: |