使用Selenium WebDriver测试元素是否存在?

有没有一种方法可以测试元素是否存在?任何findElement方法都将以异常结尾,但这不是我想要的,因为它可能是一个元素不存在并且没关系,这不是测试失败,因此异常不能成为解决方案。

我发现了这篇文章:Seleniumc#Webdriver:等待元素出现,但这是针对C#的,我不是很擅长。谁能将代码翻译成Java?抱歉,我在Eclipse中进行了尝试,但我没有将其正确地插入Java代码中。

这是代码:

public static class WebDriverExtensions{

public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds){

if (timeoutInSeconds > 0){

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));

return wait.Until(drv => drv.FindElement(by));

}

return driver.FindElement(by);

}

}

回答:

使用findElements代替findElement

findElements 如果没有找到匹配的元素,则返回一个空列表,而不是一个异常。

要检查是否存在某个元素,可以尝试执行此操作

Boolean isPresent = driver.findElements(By.yourLocator).size() > 0

如果找到至少一个元素,则返回true;如果不存在,则返回false。

官方文档推荐此方法:

findElement不应用于查找不存在的元素,而应使用findElements(By)并声明零长度响应。

以上是 使用Selenium WebDriver测试元素是否存在? 的全部内容, 来源链接: utcz.com/qa/413572.html

回到顶部