当前位置: 首页 > 知识库问答 >
问题:

WebDrive在Linux测试中随机生成chrome不可达

郭坚壁
2023-03-14

我们的CI测试随机失败,出现“chrome无法访问”错误。起初它们非常罕见,但随着我们测试基地的扩大,它已经变得难以忍受。关于这一点,还有其他几个问题/bug报告,但这些似乎都与我们的案例无关。

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

我尝试使用ChromeDriver v2.9.248304中的Chrome18.0.1025.151 ~ r130497-0ubuntu1和Google Chrome34.0.1847.116。旧版本的浏览器和ChromeDriver也出现了同样的问题。

通常,由于相同的错误,一行中有几个测试失败,然后在同一次运行期间,is开始在稍后的测试中再次工作。

堆栈跟踪是:

  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的错误。

共有2个答案

钮刚洁
2023-03-14

你可以尝试以下选项,

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

这会解决你的问题。

如果您有更多的测试,您应该实现selenium网格。

冀望
2023-03-14

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

 类似资料:
  • 问题 你需要生成在一定范围内的随机数,但你也需要对发生器进行“生成种子”操作来提供可预测的值。 解决方案 编写你自己的随机数生成器。当然有很多方法可以做到这一点,这里给出一个简单的示例。 该发生器绝对不可以以加密为目的! class Rand # 如果没有种子创建,使用当前时间作为种子 constructor: (@seed) -> # Knuth and Lewis' impro

  • 我对Java还是有点陌生,有一个实验室需要模拟一个彩票游戏,生成一个介于1到10之间的数字。它首先询问用户想要购买多少张彩票,然后询问他们是否希望计算机为他们生成猜测,如果是,则会生成猜测并显示中奖号码。如果用户说不,那么用户将自己输入猜测,并显示中奖号码。 我在弄清楚当有人输入是或否时如何执行代码时遇到了问题。我应该做一个do while循环吗? 这是我现在的代码。 以下是算法:1。获取购票数量

  • 问题内容: 我正在尝试在Java中生成盐,以与用于安全密码存储的哈希算法配合使用。我正在使用以下代码创建随机盐: 这应该生成一个完全安全的,随机生成的盐,以用于我的哈希算法。但是,当我运行代码时,每次都会输出相同的盐…表示生成的盐根本不是随机的。 出于明显的安全性目的,每个用户都需要一个唯一的符号,但是如果我每次创建一个新帐户时都使用此代码,则每个用户都将具有相同的符号,这一开始就破坏了它的用途。

  • 我编程用java代码生成jmeter测试计划。 然后我开始这个测试计划: 这很有效。现在我需要用不同的employeeId(随机)发送请求。在JMeter GUI中,我们可以使用随机函数随机测试。 提供JMeter API这样的功能?我们怎样才能随机化我们的请求?或者我们必须用for循环替换LoopController?

  • 问题内容: 您将如何测试随机数生成器是否正在生成实际的随机数? 我的方法:首先建立一个大小为M的散列,其中M是素数。然后取由随机数生成器生成的数字,并用M取mod,然后看它是否填充了所有散列或仅填充了一部分。那是我的方法。我们可以通过可视化证明吗? 由于我对测试的了解很少。您能建议我彻底解决这个问题吗?提前致谢 问题答案: 您应该意识到,您不能 保证 随机数生成器正常工作。请注意,即使是[1,10

  • 问题内容: 尝试搜索此内容,但是使用语法很难。有没有办法在LESS中生成随机数?我检查了文档,却什么也没看到,但想知道是否有人知道技巧或未记录的解决方案。 问题答案: 根据文档: JavaScript评估JavaScript表达式可以评估为.less文件中的值。我们建议您谨慎使用此功能,因为LESS不能通过端口进行编译,这会使LESS难以维护。如果可能,尝试考虑可以添加以实现相同目的的功能,然后在