Selenium Webdriver:处理 NoSuchElementException 的最佳实践

2024-04-20

经过大量搜索和阅读后,我仍然不清楚使用 Webdriver 处理失败断言的最佳方法。我本以为这是一个常见且核心的功能。我想做的就是:

  • 寻找一个元素
  • 如果在场 - 告诉我
  • 如果不在场 - 告诉我

我想向非技术受众展示结果,因此让它抛出带有完整堆栈跟踪的“NoSuchElementException”并没有帮助。我只是想要一条好消息。

My test:

@Test
public void isMyElementPresent(){
  //  WebElement myElement driver.findElement(By.cssSelector("#myElement"));
    if(driver.findElement(By.cssSelector("#myElement"))!=null){
        System.out.println("My element was found on the page");
    }else{
            System.out.println("My Element was not found on the page");
        }
    }

当我强制失败时,我仍然会抛出 NoSuchElementException 。我还需要尝试/捕获吗?我可以合并 Junit 断言和/或 Hamcrest 来生成更有意义的消息,而不需要 System.out.println 吗?


我也遇到过类似的情况。根据Javadoc https://seleniumhq.github.io/selenium/docs/api/java/为了findElement and findElementsAPI,看来findElement行为是设计使然的。你应该使用findElements检查不存在的元素。

由于在您的情况下,WebElement 可能不存在,因此您应该使用findElements反而。

我会按如下方式使用它。

List<WebElement> elems = driver.findElements(By.cssSelector("#myElement"));
if (elems.size == 0) {
        System.out.println("My element was not found on the page");
} else
        System.out.println("My element was found on the page");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium Webdriver:处理 NoSuchElementException 的最佳实践 的相关文章

随机推荐

  • Android:如何最大化 PreferenceFragment 宽度(或消除边距)?

    如果您查看 Android 设置屏幕截图或BC碎片 https github com commonsguy cw android tree master Prefs FragmentsBC截图中 PreferenceFragment 中有边
  • 如何在 C# 中编写条件锁?

    问题是我一直在使用锁语句 http msdn microsoft com en us library c5kehkcz aspx为了保护我的代码的关键部分 但现在 我意识到我可以允许在满足某些条件的情况下并发执行该关键代码 有没有办法调节锁
  • PHP 字符串不允许使用 < 和 > 字符

    我的代码中有一个字符串 如下例所示 很简单 但是当我尝试回显字符串时 它不喜欢 字符 所有得到回应的是 巴拉巴拉 所以 基本上我猜我需要转义这些字符才能让它们在 PHP 中工作 但我不确定具体如何操作 我将其用于模板系统 因此在 html
  • MVC 中带有 Ninject 的适当存储库生命周期范围

    在 MVC 3 应用程序中将 Entity Framework 4 与 Ninject 结合使用时 存储库和 EF 上下文的适当生命周期范围是什么 我一直在使用默认的 InTransientScope 但质疑是否应该使用 InRequest
  • 如何使 BigCommerce 小部件与 PageBuilder 兼容

    我正在按照这里的教程https developer bigcommerce com api docs storefront widgets widgets tutorial https developer bigcommerce com a
  • 使用 Blazor 和 C# 刷新 html 表数据

    我有一种情况 我有一个 for 循环 它从我的数据模型创建我的 html 表 该数据模型从 SQL Server Express 获取数据 我想知道是否可以创建一个自动刷新方法 其中表数据仅刷新而不刷新整个页面 如果没有 那么也许 OnCl
  • 使用 PrototypeJS 进行跨源资源共享

    我在跨源资源共享和原型方面遇到一些问题 我对外部资源有一个简单的发布请求 对于简单的发布请求 必须满足一些规则 Content Type 必须是 application x www form urlencoded multipart for
  • 如何在 XMPP 中实现“上次查看时间”功能(如 Whatsapp)?

    我正在开发一个聊天应用程序 并希望添加 上次查看时间 功能 我正在尝试使用存在节来实现它 但遇到一个问题 请检查下面的链接 当用户 B 也不可用时 未获取用户 A 的不可用状态 https stackoverflow com questio
  • LinkedHashMap 的 ConcurrentModificationException

    不确定是什么触发了java util ConcurrentModificationException当我迭代时LinkedHashMap下面代码中的结构 使用Map Entry方法效果很好 从之前的帖子中没有得到关于触发此问题的良好解释 任
  • 是否可以在RStudio中漂亮地显示管道字符(%>%)?

    管道运营商 gt 被大量使用在dplyr 我遇到了这个设置 将其精美地写为 unicode 三箭头字符 如下所示 我想知道是否有可能获得相同的显示RStudio 附注Emacs 的源代码 包括 elisp 代码 位于 https githu
  • 如何知道 ModelState 是否包含错误

    当表单发布到我的控制器中时 我会进行以下检查 if ModelState IsValid 如果模型无效 则会将错误添加到ModelState 然后 模型会连同验证摘要一起传递到视图 但是 我想检查一下是否ModelStatejQuery 内
  • 在 iOS 上合并 PDF 文件

    iOS中有没有一种方法可以合并PDF文件 即将一个文件的页面附加到另一个文件的末尾并将其保存到磁盘 我对 Jonathan 的代码进行了一些重构 以加入任何大小的 PDF 文件 NSString joinPDF NSArray listOf
  • 如何使用Cmake使用框架?

    对于 Macos 我想链接到一些框架 在 Windows 中 我想链接到一些库 比如OpenGL Framework 如何使用cmake表达这个需求 您可以尝试以下代码 target link libraries
  • 具有数百个字段的 Django 模型

    我有一个具有数百个属性的模型 属性可以是不同的类型 整数 字符串 上传的文件 我想从最重要的属性开始逐步实现这个复杂的模型 我可以想到两个选择 将属性定义为常规模型字段 定义一个单独的模型来分别保存每个属性 并使用ForeignKey 我还
  • 当文本模糊时,Android BlurMaskFilter 在 canvas.drawOval 中没有任何效果

    我一直在尝试创建一个自定义视图 其文本下的形状模糊 问题是 BlurMaskFilter 对我在画布上绘制的任何形状没有影响 以下是我在构造函数中初始化 Paint 对象的方法 paint new Paint 0 paint setColo
  • HTML:光标显示在只读输入文本中?

    假设我们有一个只读的文本框 如下所示
  • 如何裁剪 PDF 页面

    谁能帮助我 如何像 Acrobat Professional 那样剪切 PDF 页面 This snippet http osdir com ml windows dotnet itextsharp general 2008 09 msg0
  • 使网格正确对齐

    在我的应用程序中 我在列表框中显示有关用户的一些信息 我已经得到了我想要的大部分东西 但布局有点困扰我 它由网格制成 因此可以重新调整大小并适合纵向 横向模式 However I cannot get the layout to fix i
  • TensorFlow 队列关闭后可以重新打开吗?

    我想将项目入队 关闭队列以确保其他会话将所有剩余项目出队 然后在下一个纪元稍后重新打开它 这可能吗 q tf FIFOQueue close q q close reopen q with tf Session as sess sess r
  • Selenium Webdriver:处理 NoSuchElementException 的最佳实践

    经过大量搜索和阅读后 我仍然不清楚使用 Webdriver 处理失败断言的最佳方法 我本以为这是一个常见且核心的功能 我想做的就是 寻找一个元素 如果在场 告诉我 如果不在场 告诉我 我想向非技术受众展示结果 因此让它抛出带有完整堆栈跟踪的