检查字符串时 until() 出现“无法应用 FluentWait”错误

“FluentWait cannot be applied” error in until() while checking for a string

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

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

使用 google 解决这个问题对我没有帮助。有人知道如何解决这个错误吗?

该元素包含我想要的字符串

正如您在问题中提到的,检查某个字符串是否可以在测试页上看到作为验证点太宽泛了.理想情况下,您应该验证预期文本是否存在于 WebElement 中。为此,您必须使用 to identify the element first and then induce WebDriverWait with proper ExpectedConditions 之一来验证文本,如下所示:

步骤

  • 找到 WebElement :

    WebElement element = driver.findElement(Locator Strategy);
    
  • textToBePresentInElement引入WebDriverWait :

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

在我的例子中,我之前在 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>

它起作用了,“直到(java.util.function.Function)在 FluentWait 中无法应用于”这个错误从我的智能中消失了 class。

有些东西在较新的 selenium jar 版本中已被弃用或无法使用。所以用旧的。

你也可以在pom.xml中具体添加如下依赖并检查。

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