Selenium - 检查页面上是否显示图像

时间:2010-10-29 13:28:50

标签: image selenium selenium-webdriver

我正在为网络相册应用程序创建一套Selenium测试。我想测试图像是否实际显示(它包含有效的图像数据)。这样的事情可能吗?

5 个答案:

答案 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参数。

您可以假设,因为它位于页面源中,它将被显示,但我不知道如何实际验证这一点。