Webdriver Дождитесь завершения загрузки загрузчика Ajax

Я использую ниже для ожидания до завершения загрузки загрузчика ajax

var wait = new WebDriverWait(BrowserFactory.Driver, TimeSpan.FromSeconds(60));
wait.Until(d => (bool) (d as IJavaScriptExecutor).ExecuteScript(
            "return (window.jQuery != undefined) && (jQuery.active == 0)"));

Но я получаю

«Ошибка: OpenQA.Selenium .WebDriverTimeoutException: прошло через 60 секунд "
2
задан 13 August 2018 в 15:55

1 ответ

Попробуйте js ниже:

var result = true; try { result = (typeof jQuery != 'undefined') ? jQuery.active == 0 : true } catch (e) {}; return result;

Это код Java, но логический же:

WebDriver driver = WebDriverRunner.getWebDriver ();

new WebDriverWait(driver, 20).until(d ->
{
    try{
        return (boolean) ((JavascriptExecutor) d).executeScript("var result = true; try { result = (typeof jQuery != 'undefined') ? jQuery.active == 0 : true } catch (e) {}; return result;"));
    }
    catch (Exception e) {
        System.out.println("Error: " + e.getMessage());
    }
});
0
ответ дан 15 August 2018 в 17:04
  • 1
    'Failed: System.Reflection.TargetInvocationException: исключение было выбрано целью вызова.' при использовании вышеуказанного кода. – Tanya 13 August 2018 в 14:56
  • 2
    Проверьте мой ответ, я добавил пример Java, но логика, я думаю, такая же. – sers 13 August 2018 в 15:47

Другие вопросы по тегам:

Похожие вопросы: