get(url) 方法等待网页完全加载。如果页面上有很多东西,加载可能会很慢。
有没有办法导航到目标网页并只等待感兴趣的 WebElement?(即不是横幅、广告等)
谢谢!
get(url) 方法等待网页完全加载。如果页面上有很多东西,加载可能会很慢。
有没有办法导航到目标网页并只等待感兴趣的 WebElement?(即不是横幅、广告等)
谢谢!
您可以使用Page load timeout。据我所知, and 肯定支持这一点FirefoxDriver
,InternetExplorerDriver
但我不确定其他驱动程序。
driver.manage().timeouts().pageLoadTimeout(0, TimeUnit.MILLISECONDS);
try {
driver.get("http://google.com");
} catch (TimeoutException ignored) {
// expected, ok
}
或者您可以使用 JavaScript 进行非阻塞页面加载:
private JavascriptExecutor js;
// I like to do this right after driver is instantiated
if (driver instanceof JavascriptExecutor) {
js = (JavascriptExecutor)driver;
}
// later, in the test, instead of driver.get("http://google.com");
js.executeScript("window.location.href = 'http://google.com'");
这两个示例都会加载 Google,但它们driver
会立即将实例的控制权返回给您,而不是等待整个页面加载。然后,您可以简单地等待您正在寻找的一个元素。
如果您不希望仅在 上使用此功能WebDriver#get()
,但也需要在 nonblocking 上click()
,则可以执行以下操作之一:
使用高级用户交互 API ( JavaDocs )
WebElement element = driver.findElement(By.whatever("anything"));
new Actions(driver).click(element).perform();
再次使用 JavaScript:
WebElement element = driver.findElement(By.whatever("anything"));
js.executeScript("arguments[0].click()", element);