FluentWait不会等待elementToBeClickable()方法

时间:2017-08-28 12:02:44

标签: java selenium-webdriver wait

我在页面加载时使用以下代码等待。

   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()方法,但同样的错误。已加载请求的页面,我在浏览器中直观地看到它。

2 个答案:

答案 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抛出预期

另一件事是FluentWaitExplicit 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)

  1. java.lang.NullPointerException - 此异常通常表示smthn为null,请确保在您执行此方法时设置变量驱动程序和webelements。
  2. 确保您没有使用与当前框架不兼容的Guava版本