硒 - 检查是否显示页上的图像
-
27-09-2019 - |
题
我创建用于网络相册应用一套Selenium测试。我想测试图像是否实际显示(包含有效的图像数据)。就是这样的事情可能吗?
解决方案
我面临这种类似的情况之前,其中图像的src是如预期,但图像不显示在页面上。
可以检查是否得到通过使用JavaScriptExcecutor显示或不显示图像。
使用下面的代码 - 通过WebElement(图像) -
Object result = ((JavascriptExecutor) driver).executeScript(
"return arguments[0].complete && "+
"typeof arguments[0].naturalWidth != \"undefined\" && "+
"arguments[0].naturalWidth > 0", image);
boolean loaded = false;
if (result instanceof Boolean) {
loaded = (Boolean) result;
System.out.println(loaded);
}
您可以验证图像是否做这个实际加载的网页。
其他提示
如果您使用的是Java,硒有一个方法叫eval
左右。你给它一个JavaScript字符串,它给你的结果作为一个字符串。例如,可以尝试这(在一行中):
var req = new XMLHttpRequest();
req.open('get', document.getElementById('imageid').src, false);
req.send(null);
req.status==200
这应该状态200或“假”的东西,否则返回“真”。
如果你愿意使用测试计划前端到硒有几个选项。一旦你有图片的URL,你可以抓住这个URL并检查返回的头。你也可以将数据保存到一个文件,如果你想手动检查它。或者你可以用Java编写一个验证采取这一数据,并检查它是否确实进行解码。
如果你愿意尝试一下,然后我给你一个示例脚本。我甚至可以做一个快速的图像校验功能,如果你愿意的话。
使用此一个衬里功能:
Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);
其中:
imageWebElement
= WebElement以定位网页上的图像
isImageLoaded
=结果在布尔型(如果图像是存在返回true,如果假其不)
可以肯定检查图像出现在页源例如通过使用XPath的参数。
您可以假设,因为它是在页面的源代码,它会显示,但我不知道任何方式实际验证这一点。
不隶属于 StackOverflow