【问题标题】:Can I set a longer timeout for protractor to connect to selenium driver?我可以为量角器设置更长的超时时间以连接到硒驱动程序吗?
【发布时间】:2015-09-04 04:29:15
【问题描述】:

远程运行我的量角器测试 (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 连接?

环境细节

  • 机器:红帽 4.4.7-11
  • 量角器版本:1.8.0
  • Selenium 服务器独立:2.45.0

【问题讨论】:

    标签: selenium selenium-webdriver protractor


    【解决方案1】:

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

    exports.config = { 
      seleniumServerStartTimeout: 90000
    };
    

    我在 CentOS 7 虚拟机上遇到了同样的问题。无论出于何种原因,selenium 服务器似乎每次启动所需的时间都大不相同,并且有时会超过默认超时。

    【讨论】:

      【解决方案2】:

      您可以使用 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-18
        • 2015-01-03
        • 1970-01-01
        相关资源
        最近更新 更多