页面加载时,我使用以下代码等待。
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(40, SECONDS)
.pollingEvery(10, SECONDS)
.ignoring(NoSuchElementException.class);
wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(webelements.labelForInputFileField)));
log.info("Page loaded!");
它不起作用,出现以下错误:
java.lang.NullPointerException在
com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787)
在
org.openqa.selenium.support.ui.FluentWait。(FluentWait.java:96)
在
org.openqa.selenium.support.ui.FluentWait。(FluentWait.java:87)
我也尝试了
presenceOfElementLocated()
方法,但是同样的错误。请求的页面已加载,我在浏览器中可以看到它。 最佳答案
请尝试以下FluentWait
代码:-
WebElement waitsss(WebDriver driver, By elementIdentifier){
Wait<WebDriver> wait =
new FluentWait<WebDriver>(driver).withTimeout(60, TimeUnit.SECONDS)
.pollingEvery(1, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
return wait.until(new Function<WebDriver, WebElement>()
{
public WebElement apply(WebDriver driver) {
return driver.findElement(elementIdentifier);
}
});
}
如果仍然无法正常工作。检查您的XPath。可能是您的XPATH无效,所以
FluentWait
引发了期望另一件事是
FluentWait
和Explicit wait
是两种不同类型的等待。你不能与另一个对于显式等待,请使用以下代码:
WebDriverWait wait = new WebDriverWait(ad, 100);
wait.until(ExpectedConditions.elementToBeClickable(By.id("gst")).sendKeys(username);
请参阅以下内容:
http://toolsqa.com/selenium-webdriver/implicit-explicit-n-fluent-wait/
或使用
JavascriptExecutor
WebElement Searchelement=driver.findElement("Your locator");
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", Searchelement);
希望它能对您有所帮助:)