当前位置: 首页 > 面试题库 >

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

蓬运诚
2023-03-14
问题内容

有没有一种方法可以测试元素是否存在?任何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添加到Powershell并创建WebDriver实例: 现在我要找到输入字段: 我发现了几个如何在C#中“测试元素是否存在”的例子: Selenium WebDriver-测试元素是否存在

  • 问题内容: 有没有一种方法可以测试元素是否存在?任何findElement方法都将以异常结尾,但这不是我想要的,因为它可能是某个元素不存在并且没关系,这不是测试失败,因此异常不能成为解决方案。 我发现了这篇文章:Selenium c#Webdriver:等待元素出现, 但这是针对C#的,我不是很擅长。谁能将代码翻译成Java?抱歉,我在Eclipse中进行了尝试,但我没有将其正确地插入Java代码

  • 问题内容: 我真的很惊讶,我在网上找不到使用Selenium Webdriver测试元素焦点的参考。 我想检查何时尝试提交表单而缺少必填字段时,焦点移到了空白字段。但是我看不到任何使用WebDriver API的方法。 我将能够使用JavascriptExecutor找到关注的元素。但是,阅读FAQ使我认为必须有某种方法可以使用驱动程序本身执行检查。 谢谢你的帮助。 问题答案: 将返回当前的焦点。

  • 问题内容: 我想根据元素的属性来验证元素是否可见,但是我没有找到一种有效的方法来使用新的Xcode 7 UI测试材料。 我已经尝试过,但是它们似乎没有按我预期的那样工作。我想他们将与该物业合作。隐藏的元素不应该存在并且不能被击中……但这不是当前的行为(我可以理解行为……但是隐藏的元素不应被IMO击中)。 还有另一种方法来验证“隐藏”属性值吗? 问题答案: 从Xcode 7.1 Beta 3开始,U

  • 测试 map1 中是否存在 key1: 在例子 8.1 中,我们已经见过可以使用 val1 = map1[key1] 的方法获取 key1 对应的值 val1。如果 map 中不存在 key1,val1 就是一个值类型的空值。 这就会给我们带来困惑了:现在我们没法区分到底是 key1 不存在还是它对应的 value 就是空值。 为了解决这个问题,我们可以这么用:val1, isPresent =

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J