使用Selenium Webdriver验证网页上的图像是否存在

时间:2015-08-13 11:34:33

标签: java webdriver

我正在尝试验证图片是否存在于网页上。你能告诉我最可行的代码吗?我将在下面提供必要的详细信息。

(这里我指的是左上方的主要产品图片为绿色)

网页网址:http://www.marksandspencer.com/ditsy-floral-tunic/p/p60072079

如果你愿意,我也可以发送截图。请将电子邮件ID发送给我。

请尽早建议,因为我需要它。

3 个答案:

答案 0 :(得分:0)

尝试通过xpath检查找到的元素的大小:

".//*[@class='s7staticimage']/img"

如果宽度大于10px - 将显示图片=)

答案 1 :(得分:0)

以下是验证图像是否存在的一些方法,

  1. 检查img src是否包含文件名
  2. 检查img webelement size是否大于所需大小
  3. 这个有点超出了webdriver的范围,你需要从img webelement获取src属性,然后向src发出一个GET请求,看看你是否得到200 OK。
  4. 以上验证仅有助于确保页面上出现图像,但除非进行图像比较,否则无法验证是否显示所需图像。

    如果您想进行图像比较,请查看https://github.com/facebookarchive/huxley

答案 2 :(得分:0)

以下是验证网页中所有图片的代码 - selenium webdriver,TestNG,Java。

public void testAllImages(){

//测试网页 - www.yahoo.com

    wd.get("https://www.yahoo.com");

  //Find total No of images on page and print In console.
    List<WebElement> total_images = wd.findElements(By.tagName("img"));
    System.out.println("Total Number of images found on page = " + total_images.size());

    //for loop to open all images one by one to check response code.
    boolean isValid = false;
    for (int i = 0; i < total_images.size(); i++) {
     String url = total_images.get(i).getAttribute("src");

     if (url != null) {

      //Call getResponseCode function for each URL to check response code.
      isValid = getResponseCode(url);

      //Print message based on value of isValid which Is returned by getResponseCode function.
      if (isValid) {
       System.out.println("Valid image:" + url);
       System.out.println("----------XXXX-----------XXXX----------XXXX-----------XXXX----------");
       System.out.println();
      } else {
       System.out.println("Broken image ------> " + url);
       System.out.println("----------XXXX-----------XXXX----------XXXX-----------XXXX----------");
       System.out.println();
      }
     } else {    
      //If <a> tag do not contain href attribute and value then print this message
      System.out.println("String null");
      System.out.println("----------XXXX-----------XXXX----------XXXX-----------XXXX----------");
      System.out.println();
      continue;
     }
    }
}