学过selenium的都知道,一般等待元素加载有三种办法:
(1)sleep 强制等待。示例:Thread.sleep(60000)
(2)implicitlyWait 隐式等待。全局等待30s不管元素是否已经加载 示例:driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
(3)WebDriverWait 显示等待,这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait 和util来决定,比如这个timeOut是60,如果该元素60s以内出现就不在等待
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement e= wait.until(new ExpectedCondition() {
@Override
public WebElement apply(WebDriver d) {
return d.findElement(By.id("q"));
}
})
以上三种方法中,只用WebDriverWait是selenium所特有,在java-client中也找不到相应的,如果想使用这种方法怎么办?
改造轮子,首先添加AndroidDriverWait.java, 其实是将WebDriverWait的类型改成AndroidDriverWait
具体代码如下:
import org.openqa.selenium.NotFoundException;
import org.openqa.sel