selenium - Protractor 错误 - 无法启动 WebDriver session

标签 selenium selenium-webdriver protractor

我正在尝试运行 http://angular.github.io/protractor/#/ 处的普通 Protractor 示例。我已完成所有步骤,但出现以下错误。

我已经尝试过解决方案HEREHERE二进制:“/Applications/Google\Chrome.app”二进制:“/Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome”,以及两者都不起作用

我不太确定我还可以配置什么;它似乎不起作用。知道我能做些什么来让它工作吗?

编辑 我可以在 http://localhost:4444/wd/hub 看到状态,所以不确定问题是出在 Protractor 配置还是 webdriver-manager 上。

webdriver-manager 错误:

Starting ChromeDriver 2.13.307650 (feffe1dd547ee7b5c16d38784cd0cd679dfd7850) on port 10276
Only local connections are allowed.
15:18:35.760 WARN - Exception thrown
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37'
System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.5', java.version: '1.8.0_31'
Driver info: driver.version: unknown
  at java.util.concurrent.FutureTask.report(FutureTask.java:122)
  at java.util.concurrent.FutureTask.get(FutureTask.java:192)
  at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:175)
  at org.openqa.selenium.remote.server.DefaultSession.<init>(DefaultSession.java:111)
  at org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:88)
  at org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:108)
  at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:57)`

Protractor 运行时出错:

Using the selenium server at http://localhost:4444/wd/hub
[launcher] Running 1 instances of WebDriver
ERROR - Unable to start a WebDriver session.
/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:113
  var template = new Error(this.message);
                 ^
UnknownError: The process has not exited yet therefore no result is available ...
    at new bot.Error (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:113:18)
    at Object.bot.response.checkResponse (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/response.js:106:9)
    at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:152:24
    at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1582:15
    at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20)
    at notify (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:465:12)
    at notifyAll (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:442:7)
    at resolve (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:420:7)
    at fulfill (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:535:5)
    at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1582:15
    at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20)
    at notify (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:465:12)
    at notifyAll (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:442:7)
    at resolve (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:420:7)
    at [object Object].fulfill (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:535:5)
    at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:721:49
    at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/http/http.js:96:5
    at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:131:7)
    at IncomingMessage.emit (events.js:117:20)
    at _stream_readable.js:943:16
    at process._tickCallback (node.js:419:13)
==== async task ====
WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:149:22)
    at Function.webdriver.WebDriver.createSession (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:123:30)
    at [object Object].Builder.build (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/builder.js:294:22)
    at [object Object].DriverProvider.getNewDriver (/usr/local/lib/node_modules/protractor/lib/driverProviders/driverProvider.js:38:7)
    at [object Object].Runner.createBrowser (/usr/local/lib/node_modules/protractor/lib/runner.js:180:37)
    at /usr/local/lib/node_modules/protractor/lib/runner.js:246:21
    at _fulfilled (/usr/local/lib/node_modules/protractor/node_modules/q/q.js:797:54)
    at self.promiseDispatch.done (/usr/local/lib/node_modules/protractor/node_modules/q/q.js:826:30)
    at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/protractor/node_modules/q/q.js:759:13)
    at /usr/local/lib/node_modules/protractor/node_modules/q/q.js:573:44
    at flush (/usr/local/lib/node_modules/protractor/node_modules/q/q.js:108:17)
    at process._tickCallback (node.js:419:13)
    at Function.Module.runMain (module.js:499:11)
    at startup (node.js:119:16)
    at node.js:906:3
[launcher] Process exited with error code 1`

最佳答案

通过更改为 Firefox,我能够将问题范围缩小到查找/初始化 Chrome 的问题:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js'],
  capabilities: {
        'browserName': 'firefox'
  },
}

此配置工作正常并在 FF 中运行测试。

这样我就开始挖掘直到这个线程:https://github.com/angular/protractor/issues/1424并发现 chromedriver 时不时存在兼容性问题。

所以我尝试了在 http://chromedriver.storage.googleapis.com/index.html 找到的不同版本最终将 /usr/local/lib/node_modules/protractor/selenium/chromedriver 中的最新版本 (2.13) 替换为早期版本 (2.9)。

这为我解决了这个问题。

更新

看来安装较新的 Chromedriver 版本 2.15 也可以解决此问题

关于selenium - Protractor 错误 - 无法启动 WebDriver session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160752/

相关文章:

c# - XUnit 类夹具 (IClassFixture) 正在执行两次

selenium - 组合 XPath 选择器来选择后代或自身

javascript - 用 Protractor 获取元素的偏移位置

selenium - 在 Internet Explorer 中运行 Selenium 的问题

java - 如果从 DOM 中删除元素,显式等待会花费更多时间

java - 如何修复 Selenium Webdriver 异常 ElementNotVisibleException?

angularjs - 在 AngularJS 中测试 : How do I test the backend response of my API's?

java - 如何验证列表中的选定项目?

java - 无法在 Selenium Webdriver (JAVA) 中启动 Internet Explorer 或 Chrome

angularjs - 在 Protractor 中动态加载 ngMock httpBackend 响应的 JSON