检查字符串时 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>
我有一个 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 中。为此,您必须使用
步骤
找到 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>