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

Image Selenium-检查页面上是否显示图像,image,selenium,selenium-webdriver,Image,Selenium,Selenium Webdriver,我正在为一个web相册应用程序创建一套Selenium测试。我想测试是否实际显示图像(它包含有效的图像数据)。这样做可能吗?您当然可以检查图像是否显示在页面源代码中,例如使用XPath参数 您可以假设,由于它位于页面源代码中,因此将显示它,但我不知道有什么方法可以实际验证这一点。如果您愿意使用前端,请提供一些选项。一旦你有了图像的URL,你就可以抓取这个URL并检查返回的标题。如果要手动检查,也可以将数据保存到文件中。或者您可以用Java编写一个验证器来获取数据并检查它是否真的解码 如果您愿意尝

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

您当然可以检查图像是否显示在页面源代码中,例如使用XPath参数


您可以假设,由于它位于页面源代码中,因此将显示它,但我不知道有什么方法可以实际验证这一点。

如果您愿意使用前端,请提供一些选项。一旦你有了图像的URL,你就可以抓取这个URL并检查返回的标题。如果要手动检查,也可以将数据保存到文件中。或者您可以用Java编写一个验证器来获取数据并检查它是否真的解码


如果您愿意尝试一下,那么我将为您编写一个示例脚本。如果你愿意,我甚至可以做一个快速的图像验证功能。

如果你使用Java,selenium有一个名为
eval
的方法。您给它一个javascript字符串,它将结果作为字符串提供给您。例如,您可以尝试(在一行中):


对于状态200,它应该返回“true”,对于其他内容,它应该返回“false”。

我以前遇到过类似的情况,图像的src与预期的一样,但图像没有显示在页面上

您可以使用JavaScriptExcutor检查图像是否显示

使用以下代码- 传递WebElement(图像)——


通过执行此操作,您可以验证图像是否已实际加载到网页上

使用这一线性函数:

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)

在某些情况下,当画廊页面生成正常,但图像本身无效-例如,由于图像脚本中的异常。此软件看起来很有趣,但我必须使用BRONE fron end。我们公司已经花了一些人力来定制它,仅仅因为图像测试是不可行的。谢谢你的提示。谢谢你,我没想到这么多月后会有人发布工作方案。最后,我使用此代码检查页面上是否存在所有图像:
var elems=document.getElementsByTagName(“img”);var allOk=真;对于(var i=0;i0;控制台.log(elems[i]。自然宽度);}allOk。干得好!注意:我们的开发人员有一个400px的占位符图像,当您滚动到它时,他们会将其与延迟加载的图像交换。因此,对我来说,最后一个测试是
参数[0]。naturalWidth!=400
。请与开发人员联系以获取帮助。如果图像没有ID,该怎么办?图像有名称和类-在这种情况下该怎么办?@RiponAlWasim您可以使用查询选择器
document.querySelector('img[name=“my_name”]”)或
document.querySelector('img[class=“my_class”]”)
 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);
    }
Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);