我正在尝试使用Selenium了解自动化测试。我一个人工作,所以只有文档,谷歌和你们。
在VS-2105中使用Selenium,我将网站的屏幕截图保存为文件位置的图像,然后在此时停止调试。然后该文件成为预期的'结果。
然后我评论该线路,再次运行,拍摄屏幕截图但保存到其他位置。这些文件虽然大小相同,但具有不同的哈希值。
在我看来,他们是完全相同的。
我的方法有问题吗?
这是我创建我的' master'
的代码import axios from 'axios';
// pushOnResolve would be something like () => push('mynew/url')
export function login(email, password, pushOnResolve) {
const promise = axios.post('http://localhost:3114/api/users/authenticate';
// it's possible to have several .then on a promise
// so this shouldn't interfere with
// the Redux-promise or the LOGIN_USER_FULFILLED reducer
promise.then(pushOnResolve);
return {
type: 'LOGIN_USER',
payload: promise,
{
email,
password,
}),
};
}
这是我用来比较的代码
_webDriver.Navigate().GoToUrl(url);
var accept = _webDriver.SwitchTo().Alert();
accept.Accept();
IWebElement menu = _webDriver.FindElement(By.Id("link"));
menu.Click();
System.Threading.Thread.Sleep(500);
var screenshot = _webDriver.GetScreenshot();
var fileName = "expandMenuInPlan.png";
var origFile = _testImagesPersistentPath + fileName;
screenshot.SaveAsFile(origFile, OpenQA.Selenium.ScreenshotImageFormat.Png);
GetBytes方法
_webDriver.Navigate().GoToUrl(url);
var accept = _webDriver.SwitchTo().Alert();
accept.Accept();
IWebElement menu = _webDriver.FindElement(By.Id("link"));
menu.Click();
System.Threading.Thread.Sleep(500);
var screenshot = _webDriver.GetScreenshot();
var fileName = "expandMenuInPlan.png";
var origFile = _testImagesPersistentPath + fileName;
//screenshot.SaveAsFile(origFile, OpenQA.Selenium.ScreenshotImageFormat.Png); COMMENTED OUT
//The above is identical
var newFile = _testImagesTempForTestRunPath + fileName;
screenshot.SaveAsFile(newFile, OpenQA.Selenium.ScreenshotImageFormat.Png);
string hashOrig = GetBytes(origFile);
string hashNew = GetBytes(newFile);
if (hashOrig != hashNew)
{
SaveFailedImage(origFile, newFile, fileName);
}
以这种方式使用屏幕截图是不可靠还是我的代码有问题?
答案 0 :(得分:0)
散列图像文件并进行比较绝不是正确的方法。即使单个像素关闭也会改变散列。所以你不想让你的测试变得脆弱
您可以使用C#方法ImageComparer.Compare Method (Image, Image, ColorDifference, Image)
https://msdn.microsoft.com/en-in/library/hh191601.aspx?f=255&MSPPError=-2147217396
或者你可以使用像https://applitools.com/这样的外部工具,它们可以比较聪明的图像
PS:我与applitools没有关联,这只是一个例子,也可能有其他服务。