很多时候会遇到需要断言网页中图片是否加载完成来判断用例执行是否成功。而WebDriver只会检查DOM中是否有image 标记,而不能检查这个图片是否不可见或者坏掉。此时我们的思路是利用javascript属性naturalWidth是否大于0去判断图片是否加载完成。部分代码如下:
public boolean IsImageVisible(WebDriver driver,WebElement image){
Boolean imageLoaded1 = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", image);
if (!imageLoaded1)
{
return false;
}
return true;
}
WebElement image = checkdrawPage.getqrcodeimgelement(); //获取图片元素位置
boolean isVisible = this.IsImageVisible(driver, image); //调用IsImageVisible
assertEquals(isVisible,true);