ищу опцию, чтобы проверить, полностью ли загружена страница со всеми элементами в Java для селена - PullRequest
0 голосов
/ 25 сентября 2019

Я ищу функцию в Java + селен, где я могу проверить, полностью ли загружена страница.Я видел onLoad() JS, но ничего на Java, есть что-то для JAVA?

также я видел это:

WebDriver driver = new AnyDriverYouWant();
if (driver instanceof JavascriptExecutor) {
   ((JavascriptExecutor)driver).executeScript("yourScript();");
} else {
   throw new IllegalStateException("This driver does not support JavaScript!");
}

но снова JS и нужно написать скрипт на JS Как использовать JavaScript с Selenium WebDriver Java

update - также можете попробовать это решение: void waitForLoad(WebDriver driver) { new WebDriverWait(driver, 30).until((ExpectedCondition<Boolean>) wd -> ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")); }

отсюда https://stackoverflow.com/a/15124562/12115696

1 Ответ

0 голосов
/ 25 сентября 2019

Чтобы определить, полностью ли загружена страница, вам необходимо определить, какие веб-элементы на странице указывают состояние загрузки.Например, если есть маска загрузки какого-либо типа, вам нужно подождать, пока маска загрузки будет скрыта, чтобы убедиться, что страница полностью загружена.

Вот простая функция «Дождаться загрузки», которая используетExpectedConditions класс:

С учетом следующего HTML-кода для маски загрузки:

<div id='load-mask' style='display: block'/>

Вы можете использовать следующий код для ожидания скрытия маски загрузки:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(seconds));
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.Id("load-mask")));

Редактировать - добавлена ​​функция ожидания только для JavaScript по запросу asker:

 wait.until(driver=> ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete"));

Это проверяет атрибут document.readyState в JavaScript и завершает ожидание после установки readyStateдо complete.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...