我在页面加载时使用以下代码等待。
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 at 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()
方法,但同样的错误。已加载请求的页面,我在浏览器中直观地看到它。
答案 0 :(得分:1)
请尝试以下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);
希望它会对你有所帮助:)。
答案 1 :(得分:1)
java.lang.NullPointerException
- 此异常通常表示smthn为null,请确保在您执行此方法时设置变量驱动程序和webelements。