2 回答
TA贡献1780条经验 获得超5个赞
您可以使用 识别当前页面中的所有图像document.images
。您可以使用 . 检查当前页面中有多少图像document.images.length
。
要检查这些图像是否正确加载,您可以complete
像这样在每个图像上应用属性,document.images[0].complete
如果图像已加载,则返回 true,否则返回 false。
下面是DOM首先检查是否加载的代码,然后如果加载了 DOM,它将等到所有图像都加载到该页面中。
// Launching the browser
driver.get("http://www.google.com");
// Declaring and Casting driver to JavaScriptExecutor
JavascriptExecutor jse = (JavascriptExecutor) driver;
// Getting DOM status
Object result = jse.executeScript("return document.readyState;");
System.out.println("=> The status is : "+result.toString());
// Checking DOM loading is completed or not?
if(result.equals("complete")) {
// Fetching images count
result = jse.executeScript("return document.images.length");
int imagesCount = Integer.parseInt(result.toString());
boolean allLoaded = false;
// Checking and waiting until all the images are getting loaded
while(!allLoaded) {
int count = 0;
for(int i=0;i<imagesCount;i++) {
result = jse.executeScript("return document.images["+i+"].complete;");
boolean loaded = (Boolean) result;
if(loaded) count++;
}
// Breaking the while loop if all the images loading completes
if(count == imagesCount) {
System.out.println("=> All the Images are loaded...");
break;
} else {
System.out.println("=> Not yet loaded...");
}
Thread.sleep(1000);
}
}
但是在使用上面的代码时要小心,因为如果元素根本没有加载,它有时可能会进入无穷大状态。
要检查特定元素是否已加载,您可以执行以下操作:
// To check a particular element is loaded or not?
WebElement googleLogo = driver.findElement(By.id("hplogo"));
boolean loaded = (Boolean) jse.executeScript("return arguments[0].complete;", googleLogo);
System.out.println("The google logo is loaded ? "+loaded);
要等到加载该特定图像,您可以执行以下操作:
// To check a particular element is loaded or not?
WebElement googleLogo = driver.findElement(By.id("hplogo"));
while(!(Boolean) jse.executeScript("return arguments[0].complete;", googleLogo)) {
System.out.println("=> The google logo is not yet loaded...");
Thread.sleep(1000);
}
System.out.println("The google logo is loaded... ");
要了解有关 JavaScript 命令和 JavaScriptExecutor 的更多信息,请查看并订阅此频道
TA贡献1812条经验 获得超5个赞
你可以试试下面的代码。我正在使用它,它对我有用。
public Boolean verifyImageLoad() throws Exception {
wait.until(
new Function<WebDriver, Boolean>(){
@Override
public Boolean apply(WebDriver driver) {
return (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete", imageWebElementHere);
}
}
);
if (!imageWebElementHere.getAttribute("naturalWidth").equals("0")){
return true;
}
return false;
}
添加回答
举报