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

   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引发了期望

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


希望它能对您有所帮助:)

09-04 11:12