我创建用于网络相册应用一套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的参数。

您可以假设,因为它是在页面的源代码,它会显示,但我不知道任何方式实际验证这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top