Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 硒随机失效_Selenium_Selenium Webdriver - Fatal编程技术网

Selenium 硒随机失效

Selenium 硒随机失效,selenium,selenium-webdriver,Selenium,Selenium Webdriver,在Selenium中,我最初有30个测试,它成功地通过了所有测试。现在我有130个测试,每次我运行时,它都会通过一些随机测试,或者如果幸运的话,它会通过所有测试。有人在硒测试中遇到过这样的不稳定性吗?硒测试的不稳定性是众所周知的。确保您正在使用显式等待,并且不要在脚本中混合使用隐式和显式等待。或者,您可以尝试无头运行测试并查看其行为,或者最好在带有浏览器的单独机器上运行脚本,或者使用系统上的VM运行测试。是的,这很糟糕 特别是如果您的测试针对的是一个公共网站,并且在各种浏览器上运行,那么测试的时

在Selenium中,我最初有30个测试,它成功地通过了所有测试。现在我有130个测试,每次我运行时,它都会通过一些随机测试,或者如果幸运的话,它会通过所有测试。有人在硒测试中遇到过这样的不稳定性吗?

硒测试的不稳定性是众所周知的。确保您正在使用显式等待,并且不要在脚本中混合使用隐式和显式等待。或者,您可以尝试无头运行测试并查看其行为,或者最好在带有浏览器的单独机器上运行脚本,或者使用系统上的VM运行测试。

是的,这很糟糕 特别是如果您的测试针对的是一个公共网站,并且在各种浏览器上运行,那么测试的时间会有很大的不同,而且各种web驱动程序的质量也有很大的不同。即使在受控环境中,硒测试也不是很确定。某些web驱动程序/浏览器组合特别容易出现故障。(以我个人的经验,Safari是迄今为止最糟糕的,比IE 11糟糕得多。)

什么是失败? 我们的政策是,如果测试失败三次,则只计算失败次数。我们运行所有测试,重新运行失败,然后再次运行剩余的失败。然后我们开始调查

稳步提高 如果您保留了测试结果历史记录(您应该这样做!),那么您可以不时检查第一次运行时最常失败的测试,并查看是否有改进。我们有一个定期的片状测试会议,我们试图在不损害测试完整性的情况下改进至少一个测试。作为一个示例,我们使用以下(Java)代码来降低Safari的脆弱性:

public void click(boolean useSafariWorkaround) {
    if (useSafariWorkaround && driver.isSafari()) {
        driver.executeScript("arguments[0].click();", webElement);
    }
    else {
        webElement.click();
    }
}
如果我们不对Safari使用特殊处理,它通常会在点击时失败。但是,如果我们在任何地方都使用这种变通方法,很多地方就会失败,否则就会奏效。因此,当我们调用它时,我们默认为
false
,并且仅在Safari容易失败的地方才将其更改为true

等等,但不是永远 当然,在大多数情况下,您都应该使用隐式等待,在这种情况下,您最多可以对页面上的某个内容进行5秒或10秒的轮询,只有在这段时间内找不到该内容时才会失败。确保您使用Selenium提供的等待方法(例如,
WebDriverWait
),这样您就不会等待太久。Selenium测试足够慢,不需要在每个选择器上等待5秒或10秒。

如果某些随机测试失败,请使用完整的错误堆栈跟踪更新问题。