Java 当网页未完全加载时,如何强制WebDriver执行命令?
网页从上到下加载Java 当网页未完全加载时,如何强制WebDriver执行命令?,java,selenium,Java,Selenium,网页从上到下加载 1) <html ... 2) <head ... 3) <body ... etc 您可以使用pageLoadTimeout。将超时设置为0,然后捕获TimeoutException,然后执行特定的标题断言等 driver.manage().timeout().pageLoadTimeout(0,时间单位:秒) 更新 driver.manage().timeouts().pageLoadTimeout(0, TimeUnit.SECONDS); Web
1) <html ...
2) <head ...
3) <body ...
etc
您可以使用
pageLoadTimeout
。将超时设置为0
,然后捕获TimeoutException
,然后执行特定的标题断言等
driver.manage().timeout().pageLoadTimeout(0,时间单位:秒)代码>
更新
driver.manage().timeouts().pageLoadTimeout(0, TimeUnit.SECONDS);
WebDriverWait wait = new WebDriverWait(driver, 30);
try {
driver.get("http://");
} catch (TimeoutException e) {
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//title")));
}
更多
理想情况下,您应该使用ExpectedConditions.titleIs()
有关可用选项的更多信息,请参见。Webdriver会一直阻止,直到网页完全加载为止。恐怕我不知道有什么方法可以让你做你想做的事。谢谢你的回复。是否有其他API允许此操作?谢谢+1。但这并不是明确的等待。pageLoadTimeout设置为零,根本不允许有足够的时间上载标题标记。此外,在某些情况下,标题标签需要2秒,大约需要5秒才能上传,只要其他元素没有等待时间就可以了。根据您的担忧,请更新我的答案。在发现页面加载超时错误后,您需要等待下一个预期条件(即存在标题).这不管用。因为我们已经指定了driver.manage().timeout().pageLoadTimeout(0,TimeUnit.SECONDS)因此,即使在我们捕获了TimeoutException
之后,wait.until…
行仍会抛出另一个未被任何东西捕获的`TimeoutException为什么要捕获它,如果title元素在30秒后仍不存在,您会希望测试失败。
driver.manage().timeouts().pageLoadTimeout(0, TimeUnit.SECONDS);
WebDriverWait wait = new WebDriverWait(driver, 30);
try {
driver.get("http://");
} catch (TimeoutException e) {
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//title")));
}