我正在为网络相册应用程序创建一套 Selenium 测试。我想测试是否实际显示图像(它包含有效的图像数据)。这样的事情可能吗?
问问题
22392 次
4 回答
25
在图像的 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);
}
您可以通过执行此操作来验证图像是否已实际加载到网页上。
于 2012-05-03T11:01:46.050 回答
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”。
于 2010-11-06T12:21:31.563 回答
1
如果你愿意使用 Selenium 的TestPlan前端,那么有几个选项。获得图像的 URL 后,您可以获取该 URL 并检查返回的标头。如果您想手动检查数据,也可以将数据保存到文件中。或者您可以用 Java 编写一个验证器来获取该数据并检查它是否真正解码。
如果您愿意尝试一下,那么我会为您编写一个示例脚本。如果你愿意,我什至可以做一个快速的图像验证功能。
于 2010-11-02T10:03:52.037 回答
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)
于 2018-04-07T13:17:02.430 回答