FluentWait 不等待 elementToBeClickable() 方法
FluentWait doesn't wait by elementToBeClickable() method
我使用以下代码等待页面加载。
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)
at
org.openqa.selenium.support.ui.FluentWait.(FluentWait.java:96)
at
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);
希望对您有所帮助:)
java.lang.NullPointerException
- 此异常通常表示 smthn 为空,请确保在执行此方法时设置了变量 driver 和 webelements。
- 确保您使用的 Guava 版本与您当前的框架不兼容
我使用以下代码等待页面加载。
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) at org.openqa.selenium.support.ui.FluentWait.(FluentWait.java:96) at 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);
希望对您有所帮助:)
java.lang.NullPointerException
- 此异常通常表示 smthn 为空,请确保在执行此方法时设置了变量 driver 和 webelements。- 确保您使用的 Guava 版本与您当前的框架不兼容