检查字符串时,直到()的“FluentWait无法应用”错误

时间:2018-02-16 14:24:50

标签: java selenium selenium-webdriver webdriverwait

我有一个Selenium测试,检查测试页上是否可以看到某个字符串。 如果页面没有立即加载,我的想法是使用explicitwait。

WebElement element = driver.findElement(By.xpath("//*[text()='text']"));

之后我做了:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.visibilityOf(element));

因此,在继续之前,它的等待时间最长为10秒。如果它在10秒内看到该元素,则测试继续。

但是我在wait.until

中收到以下错误
until
(java.util.function.Function<? super org.openqa.selenium.WebDriver,java.lang.Object>)
in FluentWait cannot be applied
to
(org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.WebElement>)
 

使用谷歌解决这个问题并没有帮助我。任何人都知道如何解决这个错误?

元素包含我想要的字符串

2 个答案:

答案 0 :(得分:3)

正如您在问题中提到的,检查在测试页上是否可以看到某个字符串过于宽泛而不是验证点。理想情况下,您应该验证预期的文本是否存在于 WebElement 中。要实现这一点,您必须先使用Locator Strategy之一来识别元素,然后使用正确的WebDriverWaitExpectedConditions来验证文本,如下所示:

步骤

  • 找到WebElement

    WebElement element = driver.findElement(Locator Strategy);
    
  • textToBePresentInElement诱导 WebDriverWait

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.textToBePresentInElement(element, "text_to_be_validated"));
    

答案 1 :(得分:0)

在我以前的情况下,我在pom.xml中使用以下一个

     <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-java</artifactId>
         <version>3.141.59</version>
     </dependency>

我删除了上面的一个,并替换成了这个

      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>3.0.1</version>
          <scope>compile</scope>
      </dependency>

它起作用了,并且“ FluentWait中的until(java.util.function.Function)不能应用到”此错误出自我的intellij类。

不推荐使用某些功能,或者在较新的硒罐版本中不起作用。所以用旧的吧。

您还可以专门在pom.xml中添加以下依赖项并进行检查。

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-support</artifactId>
        <version>3.0.1</version>
    </dependency>