У меня проблема с драйвером Selenium Firefox, из-за которого иногда какое-то объявление 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();
как вызывающий ошибку.