Некоторые из сайтов, с которыми я имею дело, имеют тяжелые запросы ajax. Я планирую дождаться завершения запроса Ajax, прежде чем нажимать для утверждения для элемента. В настоящее время я использую
try {
if (driver instanceof JavascriptExecutor) {
JavascriptExecutor jsDriver = (JavascriptExecutor)driver;
for (int i = 0; i< timeoutInSeconds; i++)
{
Object numberOfAjaxConnections = jsDriver.executeScript("return jQuery.active");
// return should be a number
if (numberOfAjaxConnections instanceof Long) {
Long n = (Long)numberOfAjaxConnections;
System.out.println("Number of active jquery ajax calls: " + n);
if (n.longValue() == 0L) break;
}
Thread.sleep(1000);
}
}
else {
System.out.println("Web driver: " + driver + " cannot execute javascript");
}
}
catch (InterruptedException e) {
System.out.println(e);
}
Но он хорошо работает для запросов Ajax, но не для каких-либо похожих запросов с вариантами библиотек jQuery.
Примечание:
document.readyState == 'complete'
Он не работает для Ajax-запросов или других аналогичных альтернатив.
Ни те, ни другие тесты не написаны мной или не принадлежат одному webapp. Поэтому я не могу редактировать webapp.