class Test{
public static WebDriver driver=null;
public static void main(String[] args) throws Exception{
driver=new FirefoxDriver();
driver.navigate().to("http://www.w3schools.com/");
Test.explicitWait("invisibilityOfElementLocated","xpath","//*[text()='LEARN HTML']");
driver.findElement(By.xpath("//*[text()='HTML REFERENCE']")).click();
}
public static void explicitWait(String expectedConditionsMethod,String byMethod,String locator) throws Exception{
WebDriverWait wait=new WebDriverWait(driver, 20);
Method by=By.class.getMethod(byMethod, String.class);
Object bymethod=by.invoke(null, locator);
Method expectedConditions=ExpectedConditions.class.getMethod(expectedConditionsMethod, By.class);
wait.until((Predicate<WebDriver>) expectedConditions.invoke(null, bymethod));
}
}
我想做一个明确的等待方法,可以直接调用,如上所示,但我不能做到这一点,请帮助。 获取错误“线程中的异常”main“java.lang.ClassCastException:org.openqa.selenium.support.ui.ExpectedConditions $ 18无法转换为com.google.common.base.Predicate at roughWork.Test.explicitWait(Test的.java:110) 在roughWork.Test.main(Test.java:29) “ 在Eclipse不能自己的方法使用硒的明确等待方法