从命令行安装.safariextz

时间:2015-02-05 21:36:16

标签: selenium ssh install safari-extension

我遇到了MacOS 10.10和Safari 8.0的问题,其中Selenium驱动程序无法与SafariDriver建立连接。此主题中的详细信息:https://code.google.com/p/selenium/issues/detail?id=7933。要在本地运行测试,解决方法是下载Selenium 2.44.0,解压缩包,然后双击SafariDriver.safariextz进行安装。但是,通过SSH连接,这不起作用。我想在每次测试运行之前从命令行安装SafariDriver.safariextz。有关如何从命令行安装.safariextz文件的任何线索吗?

更新:刚刚验证每次从SSH连接启动Safari时(/Applications/Safari.app/Contents/MacOS/Safari)都会删除所有扩展名(Safari-> Preferences-> Extensions为空)。

2 个答案:

答案 0 :(得分:1)

如果你在同一台机器上,AppleScript应该可以工作:

# this first part might not be needed
osascript -e 'tell application "Safari"
  activate
end tell'

osascript -e 'ignoring application responses
  tell application "Safari"
    open "'"/path/to/SafariDriver.safariextz"'"
    end tell
end ignoring
tell application "System Events"
  tell process "Safari"
    set frontmost to true
      repeat until (exists window 1) and subrole of window 1 is "AXDialog" -- wait until the dialog is displayed.
        delay 1
      end repeat
    click button 1 of front window -- install
  end tell
end tell'

如果失败,则可能必须通过打开系统偏好设置>启用对辅助设备和应用程序的访问权限。安全与安全隐私>隐私>辅助功能并检查您要允许访问的应用程序(Safari等)。

更多信息:https://support.apple.com/en-us/HT202866

Jacob Salmela还创建了一个实用程序,可以从命令行执行此操作:

http://jacobsalmela.com/os-x-yosemite-enable-access-assistive-devices-command-line/

答案 1 :(得分:0)

以下解决方法确实对我有用: 升级后,Safari扩展是密钥链的一部分,通过SSH,用户无权访问登录密钥链。解决方案是为EACH ssh会话授予该访问权限。

security -v unlock-keychain -p <password> ~/Library/Keychains/login.keychain

然后使用以下步骤打开Safari应该可以正常工作     /Applications/Safari.app/Contents/MacOS/Safari

对于永久性的&#39;解决方案添加构建步骤,执行shell脚本如下:

#!/bin/bash
keychain="~/Library/Keychains/login.keychain"
security unlock-keychain -p <password> ${keychain} &>/dev/null

if [ $? -ne 0 ];then
  echo "Cannot open keychain ${keychain}"
  exit 1
fi

正如此处http://sap-production.github.io/xcode-maven-plugin/site/howto/HandlingKeychainsInMasterSlaveEnvironment.html所述。