Вы можете идентифицировать все изображения на текущей странице, используя document.images
.Вы можете проверить, сколько изображений есть на текущей странице, используя document.images.length
.
. Чтобы проверить, правильно ли загружены эти изображения, вы можете применить свойство complete
к каждому изображению, например document.images[0].complete
, котороевернет true, если изображение загружено, иначе false.
![Here the proof](https://i.stack.imgur.com/qKss3.png)
Ниже приведен код, который будет проверять, загружен 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, проверьте и подпишитесь на этот канал
Источник: Коллекция HTML DOM-изображений Документnt.images
Надеюсь, это поможет ...