Webdriverio: 在 Jenkins 中启动测试时 ESOCKETTIMEDOUT

创建于 2018-04-05  ·  4评论  ·  资料来源: webdriverio/webdriverio

问题

我无法在 Jenkins 中多次运行测试。 我可以在我的本地机器上多次运行测试并且它总是工作正常,但是我在 Jenkins 中收到了 ESOCKETTIMEDOUT 错误。

环境

  • WebdriverIO 版本:发生在 4.10.1 并且也更新到 4.12.0
  • Node.js 版本:8.9.1
  • 独立模式或 wdio testrunner:独立
  • 如果 wdio testrunner,运行同步或异步测试:sync
  • 使用的其他 wdio 包(如果适用):我正在使用黄瓜样板

细节

重要的是,当我收到此错误时,我无法恢复(在 Jenkins 中一次又一次地运行该作业总是会产生相同的错误)。 但是我已经能够运行它 2-3 次而没有错误(所以,我已经看到它起作用了)。
测试在 Chrome 中启动。 詹金斯奴隶是一个 MacMini。 提供 selenium 主机和端口并不能解决问题。

链接到 Selenium/WebdriverIO 日志

带有详细日志级别的 Jenkins 错误如下:

+ yarn run local-webserver
yarn run v1.3.2
$ forever start -s ./node_modules/.bin/http-server ./demo-app -s
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: ./node_modules/.bin/http-server
Done in 0.44s.
+ yarn run wdio
yarn run v1.3.2
$ /Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/.bin/wdio
[18:48:07]  COMMAND POST     "/wd/hub/session"
[18:48:07]  DATA        {"desiredCapabilities":{"javascriptEnabled":true,"locationContextEnabled":true,"handlesAlerts":true,"rotatable":true,"maxInstances":5,"browserName":"chrome","loggingPrefs":{"browser":"ALL","driver":"ALL"},"requestOrigins":{"url":"http://webdriver.io","version":"4.12.0","name":"webdriverio"}}}
ERROR: ESOCKETTIMEDOUT
chrome
    at new RuntimeError (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/webdriverio/build/lib/utils/ErrorHandler.js:144:12)
    at Request._callback (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/webdriverio/build/lib/utils/RequestHandler.js:330:43)
    at self.callback (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/request/request.js:186:22)
    at emitOne (events.js:116:13)
    at Request.emit (events.js:211:7)
    at ClientRequest.<anonymous> (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/request/request.js:816:16)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at ClientRequest.emit (events.js:208:7)
    at Socket.emitTimeout (_http_client.js:708:34)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at Socket.emit (events.js:208:7)
    at Socket._onTimeout (net.js:407:8)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)

error Command failed with exit code 1.

重现问题的代码

Jenkins 的工作非常简单:

  • 转到特定目录
  • 设置节点版本
  • 纱线安装
  • 使用以下命令启动测试: yarn run wdio

最有用的评论

对于那些可能遇到同样问题的人,我刚刚尝试使用无头 chrome,几天前它工作正常:D 所以在你的能力中添加“无头”chromeOption,看看它是否有效。

所有4条评论

看起来 WebdriverIO 无法与 WebDriver 后端(可能是 Chromedriver)建立连接。 这可能有多种原因,但不太可能与 WebdriverIO 相关。 您的驱动程序设置有问题。 也许您同时进行了许多测试? 我们无法在 WebdriverIO 中解决此问题。 因此关闭这个。 请随时联系我们的支持Gitter如果您还有其他问题。

嗨@christian-bromann 感谢您的快速回复。

我很担心,因为我只运行一个测试(一个功能),登录,而且正如我提到的,我已经能够看到它在 Jenkins 中工作了 2-3 次,但随后它开始失败(总是出现相同的错误) )。 测试完成后,selenium/webdriver 是否有可能没有很好地断开/关闭? 也许以前的运行有一些打开的连接?

我做了其他不同的测试(因为我正在测试不同的网站)并在 Jenkins 中配置了新作业并发现了同样的问题。 第一次测试工作正常,然后它开始因 ESOCKETTIMEDOUT 而失败。

同样,我可以在本地运行这些测试而不会出现问题并且多次。

对于那些可能遇到同样问题的人,我刚刚尝试使用无头 chrome,几天前它工作正常:D 所以在你的能力中添加“无头”chromeOption,看看它是否有效。

@LaiaPR ,我今天遇到了同样的问题。 正如您所建议的,添加“无头”选项可以解决问题。 谢谢!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ViaMay picture ViaMay  ·  4评论

KOPTE3 picture KOPTE3  ·  3评论

kiraLinden picture kiraLinden  ·  3评论

graingert picture graingert  ·  4评论

christian-bromann picture christian-bromann  ·  3评论