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

标签 selenium selenium-webdriver protractor

远程运行我的 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 服务器,我发现有时它会立即运行,有时我必须等待一分钟。

我的问题是:有什么方法可以让 Protractor 等待 webdriver 连接更长时间吗?

环境细节

  • 机器:Red Hat 4.4.7-11
  • Protractor 版本:1.8.0
  • Selenium 服务器独立版:2.45.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

关于selenium - 我可以为 Protractor 设置更长的超时时间以连接到 selenium 驱动程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30916970/

相关文章:

java - 在执行期间检查 WebDriver 测试中的加载时间

selenium - selenium grid 只运行 Selenium 命令还是来自不同库的代码块

java - 获取无法使用 java/selenium 聚焦 chrome 和 edge 中的元素

java - Selenium Webdriver - 单击具有相同 ID 的多个元素的隐藏元素

javascript - Protractor - 如何将 Promise 数组的结果获取到另一个数组中并在其他函数中使用该数组

selenium - Protractor 错误: SyntaxError: Unexpected token =

google-chrome - Selenium 网格 : set chrome *binary* path

selenium - “sendKeys”在 Selenium WebDriver 中不起作用

javascript - 如何从 Protractor 中的父元素返回子元素

java - Selenium 有哪些替代品?