我已将pageLoadTimeout设置为30秒。对我这样的司机:
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
在我的整个代码中,我有一个方法将屏幕截图带到浏览器:
try {
String path = "logs/ss/";
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(path + createnamess() + ".jpg"));
}catch(Exception e41) {
writelog("SCREENSHOT FAIL : " + e41.toString); //print message in txt file
}
总是在没有截屏时,在txt文件中出现:
SCREENSHOT FAIL:org.openqa.selenium.TimeoutException:timeout ....
我无法理解为什么抛出TimeoutException以及如何修复它。
答案 0 :(得分:0)
根据Java Docs pageLoadTimeout()
设置在抛出错误之前等待页面加载完成的时间。如果超时为负,则页面加载可能是无限期的。
正如您设置pageLoadTimeout()
如下:
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
因此,只要您的网页加载时间超过30秒,就会抛出 TimeoutException 。
现在根据您的代码块,在try-catch {}
发挥作用之前,此 TimeoutException 会被抛出。
要修复 TimeoutException 问题,您可以考虑以下任何一种方法:
pageLoadTimeout()
并让目标网页花费时间加载。将driver.get(...)
放入try{}
并加入 TimeoutException catch{}
并退出,如下所示:
try {
driver.get("https://stackoverflow.com")
//other code
}catch(Exception e) {
writelog("Page load Timeout Occured. Quiting !!!");
driver.quit()
}