【问题标题】:Image validation using the JavascriptExecutor always return 'false' even when image is loaded即使加载了图像,使用 JavascriptExecutor 的图像验证也始终返回“false”
【发布时间】:2018-03-29 06:03:44
【问题描述】:

我正在尝试使用 Selenium 验证网页中加载的图像。下面是我使用的同一行。 'ImagePresent' 总是返回 'false',即使它能够从最后一行捕获并打印图像的属性值。

 WebElement Imglogo = driver.findElement(By
            .xpath("//img[@src='Images/Logo.png']"));

    Boolean ImagePresent = (Boolean) ((JavascriptExecutor) driver)
            .executeScript(
                    "return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0",
                    Imglogo);
    System.out.println("The boolean value of ImagePresent: "+ImagePresent); //returns false
    System.out.println("Image Attribute: "+Imglogo.getAttribute("src")); //prints the full path

【问题讨论】:

  • 我不知道硒,所以这可能完全没用 - 但是你有没有机会在页面加载之前进行评估?有没有办法附加到图像元素的.load 事件并在触发时进行评估?

标签: javascript java html selenium-webdriver automation


【解决方案1】:

我认为你在这里太花哨了。在这种情况下,您真的不需要 JSE。您可以使用.getAtribute("naturalWidth") 并比较预期回报。

WebElement Imglogo = driver.findElement(By.xpath("//img[@src='Images/Logo.png']"));
System.out.println(Imglogo.getAttribute("naturalWidth"));
System.out.println(Imglogo.getAttribute("naturalWidth").equals("0"));

...等等。

【讨论】:

  • 我尝试了你的建议。但它仍然返回 false。
  • 您尝试了哪些返回 false 的具体代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 2012-09-17
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多