我正尝试将公司网站的回归测试从Selenium 2.31和Chrome 25迁移到Selenium 3.14和Chrome75。测试使用屏幕截图系统,在测试过程中将屏幕截图与基准进行比较。在此过程中,我遇到了一个问题,即对于相同的测试,只是在不同的运行之间,页面小部分的呈现方式存在细微的差异,导致测试失败。
测试每次都在具有Xeon E5-2670的AWS medium3计算机上运行。通常对于特定的测试,差异在同一位置-有时会出现,有时不会。我创建了一个小实验来对Google主页进行此操作,并且发现发生了同样的事情。
{
webDriver = CreateDriver(chromeOptions);
Helper.ResizeBrowserWindows(webDriver);
for(int i = 1; i < 200; i++) {
webDriver.Navigate().GoToUrl("http://www.google.ca");
new OpenQA.Selenium.Support.UI.WebDriverWait(webDriver, new System.TimeSpan(0, 0, 10)).Until(
d => ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete"));
screenshot.tryMatch("google" + i + ".png");
}
return true;
}
差异不会每次都显示出来。例如, google198.png 与...不同 google199.png 并且可以使用https://online-image-comparison.com/之类的图像差异工具(由于我们使用图像到字节数组转换和字节数组比较,因此Fuzz设置为0)可以看出差异。 the difference
有没有人看到这种情况发生或知道可能发生什么情况?我的目标是找到原因并以某种方式解决,而不仅仅是找到解决方法(例如提高容忍度)。
答案 0 :(得分:0)
因此,我为我的案件找到了解决方案。使用--disable-partial-raster标志修复了Chrome 75上的这种不一致。不确定原因(我已经与Google员工联系了),但是可以使用。