无法与SafariDriver扩展建立连接

问题描述:

我一直在使用量角器在AngularJS Web应用程序中运行e2e测试,并在Chrome和Firefox上进行测试。当加入Safari浏览我的阵列,显示如下:无法与SafariDriver扩展建立连接

“无法建立与SafariDriver扩展的连接”

我已经找到一种方法来在本地解决这个问题,但我们正使用Codeship自动化我们的构建,我需要一种解决方法,而不必手动将驱动程序添加到硒并在Safari中启用。

我使用硒2.43.1

配置:

exports.config = { 
    baseUrl: 'http://localhost:9001', 
    multiCapabilities: [{ 
    'browserName': 'chrome' 
    }, { 
    'browserName': 'firefox' 
    }, { 
    'browserName': 'safari' 
    }], 
    specs: ['e2e/app.js'] 
}; 

的package.json:

{ 
    "name": "livingthevalues", 
    "version": "0.0.0", 
    "dependencies": { 
    "express": "^4.9.7", 
    "gzippo": "^0.2.0", 
    "bower": "^1.3.8", 
    "grunt": "^0.4.5", 
    "grunt-cli": "^0.1.13", 
    "grunt-autoprefixer": "^0.7.3", 
    "grunt-concurrent": "^0.5.0", 
    "grunt-contrib-clean": "^0.5.0", 
    "grunt-contrib-compass": "^0.7.2", 
    "grunt-contrib-concat": "^0.4.0", 
    "grunt-contrib-connect": "^0.7.1", 
    "grunt-contrib-copy": "^0.5.0", 
    "grunt-contrib-cssmin": "^0.9.0", 
    "grunt-contrib-htmlmin": "^0.3.0", 
    "grunt-contrib-imagemin": "^0.8.1", 
    "grunt-contrib-jshint": "^0.10.0", 
    "grunt-contrib-uglify": "^0.4.0", 
    "grunt-contrib-watch": "^0.6.1", 
    "grunt-filerev": "^0.2.1", 
    "grunt-google-cdn": "^0.4.0", 
    "grunt-newer": "^0.7.0", 
    "grunt-ng-annotate": "^0.3.0", 
    "grunt-svgmin": "^0.4.0", 
    "grunt-usemin": "^2.1.1", 
    "grunt-wiredep": "^1.7.0", 
    "jshint-stylish": "^0.2.0", 
    "load-grunt-tasks": "^0.4.0", 
    "time-grunt": "^0.3.1" 
    }, 
    "devDependencies": { 
    "chai": "^1.9.2", 
    "chai-as-promised": "^4.1.1", 
    "cucumber": "^0.4.4", 
    "grunt-karma": "^0.9.0", 
    "grunt-protractor-runner": "^1.1.4", 
    "karma": "^0.12.17", 
    "karma-chrome-launcher": "^0.1.4", 
    "karma-jasmine": "^0.1.5", 
    "karma-junit-reporter": "^0.2.2", 
    "karma-mocha": "^0.1.6", 
    "karma-phantomjs-launcher": "^0.1.4", 
    "protractor": "^1.3.1", 
    "protractor-cucumber": "^0.1.2", 
    "sinon": "^1.11.0" 
    }, 
    "engines": { 
    "node": ">=0.10.0" 
    }, 
    "scripts": { 
    "test": "grunt test", 
    "pree2e": "./node_modules/protractor/bin/webdriver-manager update", 
    "e2e": "grunt test:e2e" 
    } 
} 

命令由ci运行:

Exporting Environment 
0 min 2 sec 
git clone --branch 'commentBox' --depth 50 [email protected]:MyTeam/myrepo.git ~/src/github.com/MyTeam/myrepo 
0 min 1 sec 
cd clone 
0 min 1 sec 
git checkout -qf 2ec65e3b32971d0f7f9de948c40f019f0629adea 
0 min 1 sec 
Preparing Dependency Cache 
0 min 10 sec 
Preparing Virtual Machine 
0 min 5 sec 
rvm use 2.0.0-p195 
0 min 5 sec 
bundle install 
0 min 2 sec 
nvm install 0.10.25 
0 min 2 sec 
nvm use 0.10.25 
0 min 1 sec 
npm install 
0 min 7 sec 
bower instal 
0 min 7 sec 
npm test 
0 min 10 sec 
npm run e2e 

谢谢 - 看起来像这样一个简单的事情要做,但不明白为什么它不工作。

在Mac上,您以前必须安装的Selenium SafariDriver扩展现在已折旧。在El Capitan & Sierra Apple提供它自己的Safaridriver。卸载以前的safaridriver扩展(如果你已经安装了它),并从链接2启用新safaridriver,摘录:

  • 确保制定菜单。可以通过打开Safari首选项(菜单栏中的Safari>首选项),转到高级选项卡并确保选中菜单栏中的显示显影菜单复选框来打开它。
  • 在“开发”菜单中启用远程自动化。这通过 切换菜单栏中的开发>允许远程自动化。
  • 授权safaridriver启动本地Web服务器托管 的webdriverd服务。要做到这一点,手动运行/ usr/bin/safaridriver一次 并完成身份验证提示。例如在终端:

另外,你需要运行Selenium 3.0 +(支持在3.0.0-β1开始)以使用新的Safari浏览器的驱动程序。

备注: 如果仍有问题,可以查看2nd link底部的附录。另一个需要注意的地方是,新的safaridriver只支持一个会话,所以maxSessions =#不再支持。另外,如果你使用npm selenium-standalone install,你可以像这样更新硒版本。

selenium-standalone install --version=3.0.1 --baseURL=https://selenium-release.storage.googleapis.com 

然后用--version = 3.0.1标志引导集线器和节点。

我对这个确切的问题摔跤,试图自动化我们对Safari 7.1的测试。迄今为止,我的研究让我相信,在Safari 7.1中,一种新的安全模型已经到位,可以使扩展更加安全。这是一个related thread fwiw。我曾尝试使用mvn命令行安装SafariDriver扩展,但未能如此。我试着运行一个简单的命令行来打开Safari,并将扩展名作为参数,然后提示您启用/安装它。 (对无人看管的流量没有好处)。建议的另一个破解是直接进入Safari用于首选项/扩展名的plist文件,但我在Mac 10.10上找不到它。我很想知道这里的答案。

+0

啊我明白了,那是一种痛苦。我已经手动安装它,就像他们在线程中做的那样很好,只是自动化部分很痛苦。也找不到plist,所以除非有一个我们缺少的命令似乎没有太多可以做到的这一点...现在应该与一些人交谈,让我们知道如果我能找到一个解决方案 - 希望有人会知道! – lg365 2014-10-30 12:36:48

我使用Windows 7
先决条件:在Windows上安装的Safari

  1. 转到http://docs.seleniumhq.org/download/
  2. 向下滚动 - >转到节 “SafariDriver” 下载 “SafariDriver.safariextz”
  3. 的“SafariDriver.safariextz”(以前下载)双击
  4. Safari浏览器将与弹出包含开放的“安装”按钮 - >点击安装按钮
  5. 现在去Safari浏览器的首选项,你会看到的webdriver(在我的情况的webdriver 2.48.0)安装(启用webdriver的复选框被选中))
  6. 现在是时候来实例化SafariDriver并获得所需的网址如下:

    WebDriver driver = new SafariDriver();
    driver.get(“https://www.packtpub.com/web-development/mastering-selenium-testing-tools-video”);