无法使用 selenium Java FireFox 驱动程序从 pageLoadTimeout 捕获 TimeOutException 和刷新页面
Unable to catch TimeOutException from pageLoadTimeout and refresh page using selenium Java FireFox Driver
我在使用 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();
导致错误。
结果几乎符合预期并符合规格。
这个错误信息...
Exception in thread "main" org.openqa.selenium.TimeoutException: Timeout loading page after 10000ms
...是您配置为 pageLoadTimeout()
的结果:
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
关于异常原因的详细分析可以随时捕获WebDriverException。您可以在 .
中找到详细的讨论
结尾
我在使用 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();
导致错误。
结果几乎符合预期并符合规格。
这个错误信息...
Exception in thread "main" org.openqa.selenium.TimeoutException: Timeout loading page after 10000ms
...是您配置为 pageLoadTimeout()
的结果:
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
关于异常原因的详细分析可以随时捕获WebDriverException。您可以在