public class testFluent { WebDriver driver; @Before public void setUp(){ driver = new FirefoxDriver(); driver.manage().window().maximize(); driver.manage().deleteAllCookies();} @Test public void myFirstFluent(){ WebElement element; driver.get("http://www.yahoo.com"); element = myDynamicElement(By.id("//*[@id='p_13838465-p']")); System.out.println("Element found"); } public WebElement myDynamicElement(final By locator){ Wait<WebDriver> wait = new FluentWait<WebDriver>(driver) .withTimeout(10, TimeUnit.SECONDS) .pollingEvery(100, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class); WebElement element = wait.until(new Function<WebElement, WebDriver>(){ public WebElement apply(WebDriver drv){ return drv.findElement(By.id(locator)); } }); return element; } }
我无法找到并以错误结束。
java.lang.Error:未解决的编译问题:Wait类型的until(Function)方法不适用于自变量(new Function(){})函数无法解析为类型 类型为By的方法id(String)不适用于com.junit.qa.testFluent.myDynamicElement(testFluent.java:49)上的参数(By)
java.lang.Error:未解决的编译问题:Wait类型的until(Function)方法不适用于自变量(new Function(){})函数无法解析为类型
类型为By的方法id(String)不适用于com.junit.qa.testFluent.myDynamicElement(testFluent.java:49)上的参数(By)
等待,你可以使用这样的东西
private boolean wAit(String match) { try { (new WebDriverWait(driver, 30)) .until(ExpectedConditions.presenceOfElementLocated (By.xpath(match))); return true; } catch (NoSuchElementException e) { return false; } }
您可以创建上述方法,并在需要等待元素的任何地方使用它。例如
如果要在文本框中写一些东西并想等待文本框加载
wAit(" xpath of the textbox here") driver.findelements... sendkeys()..
如果需要,您可以更改定位器类型并增加/减少时间限制