Selenium webdriver java等待元素存在

时间:2016-08-18 10:31:31

标签: java selenium selenium-webdriver automated-tests

我正在尝试让函数在Selenium中等待一个元素。

private WebElement  waitIsClickable(By by, int n) throws Exception{

        WebDriverWait wait= new WebDriverWait(driver,/*seconds=*/ n);
        wait.until(ExpectedConditions.elementToBeClickable(by));

        return driver.findElement(by);
}

但是当我想要使用它时:

waitIsClickable(By.id("logIn"), 20).click();

我收到错误:

  

错误:(1057,20)java:类函数中的waitIsClickable方法   不能适用于给定的类型;必需:org.openqa.selenium.By,int   发现:org.openqa.selenium。原因:实际和正式的参数列表   长度不同

2 个答案:

答案 0 :(得分:2)

你确定这是错误的行吗?你有这个方法的任何其他电话吗?通过错误描述,您似乎正在尝试拨打电话:

waitIsClickable(By.id("logIn")).click();

答案 1 :(得分:0)

您提供的错误堆栈跟踪会在您提供By对象时提供两个参数。因此,您需要再次检查您的通话参考。

如果期望条件在等待期间不满足,则

ExpectedConditions.elementToBeClickable会返回WebElement或抛出TimeoutException,因此无需再次找到元素。我建议你在waitIsClickable进行一些修正,如下所示: -

private WebElement waitIsClickable(By by, long n) throws Exception {
    WebDriverWait wait= new WebDriverWait(driver, n);
    return wait.until(ExpectedConditions.elementToBeClickable(by));
 }

By by = By.id("logIn");
waitIsClickable(by, 20).click();