我正在尝试让函数在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。原因:实际和正式的参数列表 长度不同
答案 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();