Невозможно перехватить TimeOutException из pageLoadTimeout и обновить страницу с помощью селена Java FireFox Driver

У меня возникла проблема с Selenium Firefox Driver, из-за которой иногда зависает какая-то реклама Google. Я могу добиться этого, просто нажав кнопку обновления, и страница полностью загрузится, я могу прочитать нужные мне данные и перейти на следующую страницу. Если я не нажму вручную обновить, это в конечном итоге истечет время ожидания по умолчанию, но это займет несколько минут.

Это, конечно, не идеально, и я надеялся, что смогу справиться с этим сценарием автоматически.

Я попытался вручную изменить время ожидания и добавить блок Try Catch, как показано ниже.

    FirefoxDriver driver = new FirefoxDriver();
    WebDriverWait wait = new WebDriverWait(driver, 30);
    FixturesDataStore fixtures = new FixturesDataStore();
    driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

    for(int i = 0; i < fixtures.getHomeTeams().size(); i++)
    {
        try
        {
        driver.navigate().to(FORMURL.concat( (fixtures.getHomeTeams().get(i)).replace( ' ', '+' )));
        }catch(WebDriverException e)
        {
            System.out.println("What a catch!!");
            driver.navigate().refresh();
        }

Ошибка:

Exception in thread "main" org.openqa.selenium.TimeoutException: Timeout loading page after 10000ms

Это подчеркивает линию

driver.navigate().refresh();

как вызывающий ошибку.

1 ответ

Решение

Результат в значительной степени, как ожидалось, и в соответствии со спецификациями.

Это сообщение об ошибке...

Exception in thread "main" org.openqa.selenium.TimeoutException: Timeout loading page after 10000ms

... является результатом pageLoadTimeout() который вы настроили как:

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

Для подробного анализа причины исключения вы всегда можете уловить исключение WebDriverException. Вы можете найти подробное обсуждение в pageLoadTimeout в Selenium, которое не работает.


Outro

Как сделать селен, чтобы перезагрузить нужный URL, если это занимает слишком много времени загрузки

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