无法与SafariDriver扩展建立连接

时间:2014-10-28 15:46:15

标签: selenium protractor angularjs-e2e

我一直在使用量角器在AngularJS网络应用中运行e2e测试,在Chrome和Firefox上进行测试。将safari添加到我的阵列时,会显示以下内容:

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

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

我正在使用selenium 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 git@github.com: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

谢谢 - 看起来这么简单,但无法理解为什么它不起作用。

3 个答案:

答案 0 :(得分:2)

我正在努力解决这个问题,尝试自动化我们对Safari 7.1的测试。到目前为止,我的研究使我相信,使用Safari 7.1,新的安全模型已经到位,使扩展更加安全。这是一个related thread fwiw。我尝试使用mvn命令行来安装SafariDriver扩展,但它没有这样做。我尝试运行一个简单的命令行以扩展名作为参数打开Safari,但随后系统会提示您启用/安装它。 (对无人值守的流量没有好处)。建议的另一个黑客是直接转到Safari用于首选项/扩展的plist文件,但我在Mac 10.10上找不到它。我非常渴望知道这里的答案。

答案 1 :(得分:2)

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

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

此外,您需要运行Selenium 3.0 +(支持从3.0.0-beta1开始)才能使用新的Safari驱动程序。

注意: 如果您仍有问题,请查看2nd link底部的附录。我遇到的另一个警告是,新的safaridriver只支持一个会话,因此不再支持maxSessions =#。此外,如果您使用npm selenium-standalone install,则可以像这样更新selenium版本。

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

然后使用--version = 3.0.1标志启动集线器和节点。

答案 2 :(得分:0)

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

  1. 转到http://docs.seleniumhq.org/download/
  2. 向下滚动 - >转到#34; SafariDriver"部分并下载#34; SafariDriver.safariextz"
  3. 双击" SafariDriver.safariextz" (以前下载过)
  4. Safari会弹出一个包含"安装"按钮 - >单击“安装”按钮
  5. 现在转到Safari的首选项,你会看到安装了WebDriver(在我的例子中是WebDriver 2.48.0)(选中了Enable WebDriver复选框))
  6. 现在是时候实例化SafariDriver并获得所需的URL,如下所示:

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