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

标签 java selenium selenium-webdriver

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

我找到了这篇文章:Selenium c# Webdriver: Wait Until Element is Present 但这是针对 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。

The official documentation推荐这种方法:

findElement should not be used to look for non-present elements, use findElements(By) and assert zero length response instead.

关于java - 使用 Selenium WebDriver 测试元素是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991522/

相关文章:

java - 如何使用 Selenium 验证所需的输入字段

javascript - Python Selenium WebDriver JavaScript 表迭代

java - 日期选择器前一天的第一天和最后一天

java - 改变一个数组中的值会改变另一个数组中的值

java - 许多Java集合都实现了add方法——它们实际上是深复制

java - 使用 gradle 构建并尝试使用 com.google.code.gson 时出现 ClassNotFoundException

python - selenium:即使使用完整的 xpath 也找不到元素

ruby - 从 Ruby 中的文件名动态创建自动加载命令

java - 我怎样才能绕过这个无效的类加载器层次结构?

java - Selenium 网络驱动程序 : How to check if a ui element exists on specific screen regardless of if it currently visible/hittable