如何等待driver.get(),因为我们使用.get()访问的URL是不知道的。并且可能需要未知的时间,所以我们必须给diver.get()提供30秒的超时,然后如何给它。
以下是它的代码..
package org.openqa.selenium.example;
import java.util.List;
import org.openqa.selenium.By
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class MyClass{
public static void main(String[] args) throws Exception {
// The Firefox driver supports javascript
WebDriver driver = new HtmlUnitDriver();
// Go to the some websites
driver.get("http://www.abced.com/123456/asd.htm");
/*** Here we DONT get back the driver, so we need to Give Time out of 30 seconds**/
final List<WebElement> element1= driver.findElements(By.tagName("a"));
for (WebElement webElement : element1) {
String urlFromPage = webElement.getAttribute("href");
System.out.println(urlFromPage);
}
}
}
我试过
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(thisPage.url);
它不起作用.. plz建议, TX
答案 0 :(得分:4)
如果您要等待加载页面,则应使用pageLoadTimeout(long time, java.util.concurrent.TimeUnit unit)
方法。 implicitlyWait(long time, java.util.concurrent.TimeUnit unit)
用于等待尚未出现的元素,而不是等待页面加载。
在您的WebDriver实例上,您应该调用与implicitlyWait()
使用的方法链类似的方法链。这将按顺序调用:
manage()
- 驱动程序管理界面options()
- 驱动程序选项界面timeouts()
- 超时选项界面pageLoadTimeout(...)
- 将超时设置为您想要的时间您可以找到相关的javadoc here。
答案 1 :(得分:0)
相反,您可以使用WebDriverWait指定要检查的条件和最大超时。这可以使用如下:
WebDriverWait _wait = new WebDriverWait(driver, new TimeSpan(0, 0, 2)); //waits 2 secs max
_wait.Until(d => d.FindElement(By.Id("name")));
我已对this问题发布了类似的答案。