我正在为网络相册应用程序创建一套Selenium测试。我想测试图像是否实际显示(它包含有效的图像数据)。这样的事情可能吗?
答案 0 :(得分:20)
在图像的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);
}
您可以通过执行此操作验证图像是否已实际加载到网页上。
答案 1 :(得分:2)
如果您使用的是Java,那么selenium会有一个名为eval
左右的方法。你给它一个javascript字符串,它给你一个字符串的结果。例如,您可以尝试这一点(在一行中):
var req = new XMLHttpRequest();
req.open('get', document.getElementById('imageid').src, false);
req.send(null);
req.status==200
对于状态200,这应该返回“true”,对于其他东西,它应该返回“false”。
答案 2 :(得分:1)
如果您愿意使用TestPlan前端到Selenium那里有一些选择。获得图像的URL后,您可以获取此URL并检查返回的标头。如果您想手动检查数据,也可以将数据保存到文件中。或者,您可以使用Java编写验证器来获取该数据并检查它是否实际解码。
如果您愿意尝试一下,那么我会给您写一个示例脚本。如果你愿意,我甚至可以做一个快速的图像验证器功能。
答案 3 :(得分:1)
使用这个衬里功能:
Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);
其中:
imageWebElement
=用于在页面上找到图像的WebElement
isImageLoaded
=结果为布尔值(如果图像存在则返回true,否则返回false)
答案 4 :(得分:0)
您当然可以检查图片是否出现在网页来源中,例如通过使用XPath参数。
您可以假设,因为它位于页面源中,它将被显示,但我不知道如何实际验证这一点。