我有一个Jenkins配置,使用Maven为OS X应用程序执行Java测试。当我尝试运行某些需要辅助访问的AppleScript时,会出现不同的错误。所以我试图以两种方式执行AppleScript:
使用ScriptEngine :
ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName(" AppleScriptEngine"); engine.eval(脚本);
在这种情况下,脚本执行失败并显示错误:发生了类型-10810的错误。
在辅助功能列表中,我有以下内容:SystemUIServer,脚本编辑器,osascript,java,mvn,bash,终端。在脚本编辑器中运行脚本或从终端运行osascript时,脚本通过时没有任何错误。
有什么建议我应该检查一下吗?
答案 0 :(得分:13)
我想你回答了自己的问题。您可以允许脚本编辑器(以及其他内容)的辅助访问。它在脚本编辑器中工作正常。
您可以尝试添加其他应用程序以获得辅助访问权限。如果脚本编辑器不能满足您的需要,这可能是一个选项。
答案 1 :(得分:1)
我之前通过使用tccutil.py
将osascript插入TCC.db解决了类似问题的问题安装完成后,我将tccutil.py链接到路径中。
sudo ln -s /source/tccutil/tccutil.py /usr/bin/tccutil.py
ls -l /usr/bin/tccutil.py
lrwxr-xr-x 1 root wheel 26 30 Dec 14:57 /usr/bin/tccutil.py -> /source/tccutil/tccutil.py
然后允许osascript访问来控制你的计算机使用以下compand
sudo tccutil.py --insert /usr/bin/osascript
我甚至在以后再次发生问题时添加了脚本。
sudo tccutil.py --insert $(pwd)/transcribe-audio-to-text.js
失败了所以我重新启动了哪个工作: - )
transcribe-audio-to-text.js目前使用系统事件使TextEdit能够保存文本文件。它是虚拟助手的一部分,在20160105非常alpha,但来源很有趣。 virtual-assistant
答案 2 :(得分:1)
我发现除了osascript本身之外,我有时需要添加调用osascript的进程的父进程,无论错误消息是什么。有时我也要添加祖父母过程。
特别是,/ bin / bash不会调用任何辅助API,但OSX希望它列出,即使osascript也已列出,我也必须添加TeamCity的agent.jar。
因此,请尝试添加.jar文件,并查看ScriptEngine是否使用您还需要启用的中间代码执行程序。
请注意,如果更改二进制文件,您可能必须删除并添加条目(我认为OSX在其数据库条目的最终二进制条目中维护某种校验和)。
答案 3 :(得分:0)
另一种解决方法是使用脚本编辑器编写AppleScript,从那里将其保存为独立应用程序,并为该应用程序提供辅助访问。然后,您可以根据需要从其他环境(例如Java应用程序或Automator工作流程)中运行该应用程序。