我可以为量角器连接到selenium驱动程序设置更长的超时时间吗?

时间:2015-06-18 13:38:53

标签: selenium selenium-webdriver protractor

远程运行我的量角器测试(jenkins)有时会导致超时错误。这不是确定性的。

Starting selenium standalone server...
[launcher] Running 1 instances of WebDriver
[launcher] Process exited with error code 1

/opt/jenkins.dir/workspace/my-jenkins-job/integration-test/ui/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1761
      throw error;
            ^
Error: Timed out waiting for the WebDriver server at http://10.97.193.53:4455/wd/hub
    at Error (<anonymous>)
    at onResponse (/opt/jenkins.dir/workspace/my-jenkins-job/integration-test/ui/node_modules/protractor/node_modules/selenium-webdriver/http/util.js:87:11)
    at /opt/jenkins.dir/workspace/my-jenkins-job/integration-test/ui/node_modules/protractor/node_modules/selenium-webdriver/http/util.js:42:21
    at /opt/jenkins.dir/workspace/my-jenkins-job/integration-test/ui/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/http/http.js:96:5
    at ClientRequest.<anonymous> (/opt/jenkins.dir/workspace/my-jenkins-job/integration-test/ui/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:145:7)
    at ClientRequest.emit (events.js:95:17)
    at Socket.socketErrorListener (http.js:1548:9)
    at Socket.emit (events.js:95:17)
    at net.js:441:14
    at process._tickCallback (node.js:448:13)

然而,当我在我的mac中本地运行测试时没有问题,测试运行完美。

我试图在远程计算机上手动启动selenium服务器,我意识到有时它会立即工作,有时候我必须等待一分钟。

我的问题是:有没有办法让量角器等待更长时间才能连接webdriver?

环境详情

  • 机器:Red Hat 4.4.7-11
  • 量角器版本:1.8.0
  • Selenium Server Standalone:2.45.0

2 个答案:

答案 0 :(得分:0)

您可以使用driver.wait函数指定它。

var webdriver = require('selenium-webdriver');
var protractor = require('protractor');

var driver = new webdriver.Builder().usingServer("seleniumAddress").build();
var browser = protractor.wrapDriver(driver);

browser.driver.wait(driver.getWindowHandle(), 5000, 'Server should start within 5 seconds');

参考文献:

  1. http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.wait

  2. http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.getWindowHandle

答案 1 :(得分:0)

是的,它应该可以解决您的问题。使用 protractor.conf.js 文件中的 seleniumServerStartTimeout 选项将超时从默认的30秒提升到更长的时间,如90秒:

exports.config = { 
  seleniumServerStartTimeout: 90000
};

我在CentOS 7 VM上遇到了同样的问题。无论出于何种原因,selenium服务器每次启动时似乎都会花费大量不同的时间,有时可能超过默认超时。