当前位置: 首页 > 知识库问答 >
问题:

OSX Mavericks中使用AppleScript的非GUI应用的可访问性设置?

贺正祥
2023-03-14

在以前版本的OS X中,要允许运行AppleScript,需要在系统首选项的可访问性窗格中选中“启用辅助设备的访问”。

对于Mavericks,现在这是一个从安全启用的每个应用程序设置

take_screenshot_iossim.sh:246:303: execution error: System Events got an error: osascript is not allowed assistive access. (-1719)

我还尝试将所有应用程序添加到权限对话框中,但仍然收到权限拒绝错误。

共有3个答案

万嘉石
2023-03-14

另一个解决方案是通过生成一个终端来运行该命令,我猜它不在苹果禁止的辅助访问列表中。

经过一番折腾,我发现以下方法适用于ssh

osascript -e 'tell application "Terminal" to do script "take_screenshot_iossim.sh"'

然后再次弹出辅助对话框,您可以批准访问

你需要设置终端在成功后自动关闭,否则你最终会得到数百万个: D

李耀
2023-03-14

我通过使用JNLP而不是SSH启动jenkins slave来解决这个问题。您可以在jenkins主机的从属节点设置中进行设置。

为了进行设置,我创建了一个automator脚本,该脚本在登录时运行,因此jenkins slave作为一个真正的用户运行。

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>

这会导致osx弹出一个“启用应用程序访问辅助设备”弹出窗口,用于automator脚本,然后允许它访问所有内容。

对我来说,这不是一个完整的解决方案,因为我有JNLP奴隶离线的问题,而不是SSH推出的奴隶,这就是我发现这个问题的原因: D

徐学潞
2023-03-14

问题

如果我理解正确,您希望从命令行启用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

其中的关键部分是:

tell application "System Events"
    activate
    if not (UI elements enabled) then set (UI elements enabled) to true
end tell

您可以将上面提到的关键部分合并到一个文件中,并告诉osascript使用以下方式执行它:

osascript file.scpt

如果要在一行上发送多个命令,而不是使用脚本文件,可以尝试(注意每个命令有多个-e标志):

osascript -e “line 1″ -e “line 2″ -e “line 3″

您可能希望使用sudo运行此功能(如果需要):

如果您在从终端运行此类脚本时遇到这样的错误,您将需要在隐私首选项中为终端启用可访问性(Mavericks,请参见下图)

execution error: System Events got an error: Can’t set UI elements enabled of application to true. (-10006)

系统首选项

 类似资料:
  • 有一个glfwSetWindowSizeCallback函数,用于设置回调函数GLFWWindowsizeFun,该函数在GLFW窗口调整大小后调用。现在的问题是,在我的用户界面库中,我有一个名为的类,它包含成员,在大小回调函数中,我想做,但我不能,因为回调函数是静态的,不是类的成员,和AFAIK它不可能是。所以我所知道的访问回调函数中的变量的唯一方法是使变量静态,但我不想这样,因为在这种情况下,

  • 我正在实现一个,用户可以在其中向左滑动以从列表中删除项目。 我希望我的应用程序是可访问的,我想知道是否有可能在对讲中以某种方式向用户宣布他需要刷卡,同时我也想知道我是否能捕捉到这个刷卡手势。 先谢谢你, 佩德罗

  • 我有充分的证据表明,适用于子菜单(如弹出式上下文菜单或子级菜单)。它用于jQueryUISelectMenu,也用于这个伟大的示例。 我无法确定的是,是否适用于以下两个示例: 信息性弹出窗口,如引导窗口-用于上下文信息,但不包含任何链接

  • JAVA访问修饰符的可访问性 公众 在 同一班级 同一套餐 子类 宇宙/其他软件包 我在互联网上寻找这些问题的答案,因为我有多个答案。一个视频说未声明的访问修饰符是公共的,而我看到另一个书面来源说未声明的访问修饰符在子类和其他包中没有限制。试图确认哪个是真的。

  • 问题内容: 如何为手机创建J2ME应用程序,其GUI与您在Java游戏中看到的菜单类似?我已经尝试过使用Netbeans的MIDlet,但是它们一次只显示一个GUI元素。 (文本框,选择项,登录名等) 您通常在哪个Java IDE中设计这些GUI?Netbeans还是Eclipse?IntelliJ IDEA也可用于此吗? 我是否必须编写/获取一个库,该库通过位图函数将GUI控件绘制到屏幕上,并保

  • 我有这个应用程序与WebView显示HTML内容。 在我做了一些相当大的更改之后,对讲的可访问性出现了一些“问题”,特别是文本到语音和触摸探索,仅在4.4设备上(不在5.0上)。 触摸一段(段落)文本有时会起作用,但有时会产生点击声,没有输出,文本也不会像应该的那样用选择矩形突出显示。 在5.0上,一切都很好:触摸一段文本会在其周围绘制一个选择,文本就会被说出。 我知道4.4上的回归与我的一些更改