2017-08-28 48 views
0

我使用以下代码等待加载页面时。FluentWait不等待elementToBeClickable()方法

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

+0

IMO兼容,你已经混了'FluentWait'和'WebDriverWait'。您是否可以更新我们您正在尝试自动化的确切手动步骤以及相关的HTML? – DebanjanB

+0

有一个文件选择器,在页面加载后应该点击它。看来,它不会等到页面加载。 – plaidshirt

回答

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); 

希望它将帮助你:)

+0

不适用于我,具有相同的效果。 Xpath应该没问题,因为我之前在2.53.1版本中使用了'WebDriverWait'。我只是试着将我的测试用例更新到3.5。 – plaidshirt

+0

我已经添加了JavascriptExecutor的代码来点击元素..试试吧 –

+0

与此代码同样的效果,NullPointerException。 – plaidshirt

1
  1. java.lang.NullPointerException - 此例外通常表明smthn为空,请确保在执行此方法时设置变量驱动程序和webelements。
  2. 确保您使用的不是番石榴的版本,是不是与您当前的框架
+0

请检查我的问题。 – plaidshirt