小编典典

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

all

有没有办法测试元素是否存在?任何 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);
    }
}

阅读 112

收藏
2022-07-27

共1个答案

小编典典

使用findElements而不是findElement.

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

要检查一个元素是否存在,你可以试试这个

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

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

官方文档推荐这种方法:

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

2022-07-27