如何使用Java等待元素在Selenium较新版本中可见?
我最近开始学习Selenium,我编写了一个使用Selenium 3.2.2的简单代码,并等待加载电子邮件字段以填充它:如何使用Java等待元素在Selenium较新版本中可见?,java,selenium,wait,Java,Selenium,Wait,我最近开始学习Selenium,我编写了一个使用Selenium 3.2.2的简单代码,并等待加载电子邮件字段以填充它: WebDriverWait wait=new WebDriverWait(driver,25); WebElement login = driver.findElement(By.xpath("//*[@id=\"Login\"]/div/div/button[1]")); login.click();
WebDriverWait wait=new WebDriverWait(driver,25);
WebElement login = driver.findElement(By.xpath("//*[@id=\"Login\"]/div/div/button[1]"));
login.click();
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"email\"]")));
我更新了一个新的Selenium版本,从那以后我就无法让它工作了-最后一行现在恢复了一个函数,我如何编写一个等待加载web元素的函数?谢谢Iv发现“可见性”和“可点击”的预期条件不如这样做可靠:
Wait = new WebDriverWait(getDriver(), 15);
public WebElement waitUntilElementIsReady(By selector)
{
WebElement element = null;
Wait.until(d ->
{
element = d.findElement(selector));
return element.isDisplayed();
});
return getDriver().findElement(selector);
}
这几乎适用于所有场景,但有时您试图获取未显示的元素。这可能是为了获取某些信息或使用该元素查找另一个元素。我发现,如果应用程序中的元素具有唯一ID,则这种情况非常罕见。或更新您的guava依赖项。