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

另一件事是 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. java.lang.NullPointerException - 此异常通常表示 smthn 为空,请确保在执行此方法时设置了变量 driver 和 webelements。
  2. 确保您使用的 Guava 版本与您当前的框架不兼容