Webdriver随机生成“chrome无法访问”'在Linux测试

时间:2014-04-11 13:37:08

标签: google-chrome selenium-webdriver webdriver selenium-chromedriver

我们的CI测试随机失败,并且“Chrome无法访问”'错误。最初它们非常罕见,但随着我们的测试基础的增长,它变得无法容忍。关于此问题还有其他一些问题/错误报告,但这些问题似乎与我们的案例无关。

测试是用Cucumber + Ruby + Watir-Webdriver + Selenium-Webdriver(每个gem的最新版本)编写的。我们在物理硬件上使用xvfb(无虚拟化)以无头模式在Ubuntu Linux 12.04上运行测试。我可以在运行Linux Mint 16的笔记本电脑上非常可靠地重现它。我们并行运行测试以加快速度。

我尝试过使用Chromium 18.0.1025.151~r130497-0ubuntu1和Google Chrome 34.0.1847.116以及ChromeDriver v2.9.248304。旧版本的浏览器和ChromeDriver也出现了同样的问题。

通常,由于相同的错误,多个测试连续失败,然后在同一次运行期间再次开始工作。

堆栈跟踪是:

  chrome not reachable
    (Session info: chrome=34.0.1847.116)
    (Driver info: chromedriver=2.9.248304,platform=Linux 3.2.0-60-generic x86_64) (Selenium::WebDriver::Error::WebDriverError)
  /home/weller/jenkins/workspace/TEST_CHROME_C/server/cucumber/support/step_support/browsers.rb:14:in `goto'
  /home/weller/jenkins/workspace/TEST_CHROME_C/server/cucumber/support/step_support/browsers.rb:35:in `blank_page'
  /home/weller/jenkins/workspace/TEST_CHROME_C/server/cucumber/support/step_support/browsers.rb:44:in `add_cookie'
  ./features/support/mocking.rb:11:in `mock'
  ./features/support/time_steps.rb:5:in `/^the current time zone is "(.*?)"$/'
  features/trackers/mood/mood_data_entry.feature:7:in `And the current time zone is "GMT+4"'

更新:问题似乎与并行性有关。当其中一个测试退出时,有可能另一个测试开始失败,并且“Chrome”无法访问'。如果我在测试结束时添加延迟,以便在关闭任何Chrome窗口之前所有测试都已完成,则测试运行没有问题。我对ChromeDriver提出了reported a bug问题。

2 个答案:

答案 0 :(得分:1)

我有同样的问题,在我的情况下是因为用户数据dir,由chromedriver随机创建,在某些情况下对于几个测试是相同的。我通过同步webdriver创建解决了它(性能不受此影响)

答案 1 :(得分:0)

您可以尝试以下选项,

1)不要兼容地运行许多Jenkins工作 2)尝试使用更少的线程,而不是更多的线程来创建浏览器。

它将解决您的问题。

如果你有更多的测试,你应该实现selenium grid。