【问题标题】:Unable to catch TimeOutException from pageLoadTimeout and refresh page using selenium Java FireFox Driver无法从 pageLoadTimeout 捕获 TimeOutException 并使用 selenium Java FireFox 驱动程序刷新页面
【发布时间】:2019-12-30 18:20:56
【问题描述】:

我遇到了 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();

导致错误。

【问题讨论】:

  • 10000ms 是 10s...你如何从 10s 超时到“但这需要几分钟”?
  • "如果我不手动点击刷新,它最终会以默认超时时间超时,但这需要几分钟。"那是在我设置超时时间之前,因此是默认一词。我正在设定正在发生的事情以及我想要完成的事情。如果您继续阅读,我明确表示我尝试手动更改超时时间作为解决方案的一部分。

标签: java selenium webdriver timeoutexception pageloadtimeout


【解决方案1】:

结果几乎符合预期并符合规范。

此错误消息...

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

...是pageLoadTimeout() 的结果,您已将其配置为:

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

要详细分析异常原因,您可以随时捕获WebDriverException。你可以在pageLoadTimeout in Selenium not working找到详细的讨论。


结尾

How to make selenium to reload the desired url if it takes too long loading

【讨论】:

  • @DeaneKane 很高兴能为您提供帮助。 Upvote 如果此/任何答案对您/对您有帮助,则为未来读者的利益提供答案。
猜你喜欢
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
相关资源
最近更新 更多