我有一个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>)
使用谷歌解决这个问题并没有帮助我。任何人都知道如何解决这个错误?
元素包含我想要的字符串
答案 0 :(得分:3)
正如您在问题中提到的,检查在测试页上是否可以看到某个字符串过于宽泛而不是验证点。理想情况下,您应该验证预期的文本是否存在于 WebElement 中。要实现这一点,您必须先使用Locator Strategy之一来识别元素,然后使用正确的WebDriverWait来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"));
答案 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>