Вы можете добавить явное ожидание, которое будет ждать, пока angular завершит обработку любых ожидающих запросов:
public static ExpectedCondition angularHasFinishedProcessing() {
return new ExpectedCondition() {
@Override
public Boolean apply(WebDriver driver) {
JavascriptExecutor jsexec = ((JavascriptExecutor) driver)
String result = jsexec.executeScript("return (window.angular != null) && (angular.element(document).injector() != null) && (angular.element(document).injector().get('$http').pendingRequests.length === 0)")
return Boolean.valueOf(result);
}
};
}
Чтобы использовать его, вы должны сделать:
WebDriverWait wait = new WebDriverWait(driver, 15, 100);
wait.until(angularHasFinishedProcessing());
Это используется дляУдалите много ошибок в автоматизации Angular для меня.
Я бы предложил всегда использовать явные ожидания и никогда не использовать неявные ожидания, неявные ожидания заставят негативные проверки выполняться вечно.Кроме того, никогда не смешивайте неявные и явные ожидания, поскольку это может вызвать все виды странного неопределенного поведения.