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.view.InflateException:二进制 XML 文件行 #11:膨胀类 ImageView 时出错

    我只是尝试制作一个小的 android java xml 应用程序来计算游戏的分数 它给了我这个错误 Error inflateing class ImageView 有人知道解决方案吗 我实际上搜索了 ppl 说添加这个 android
  • 如何将 JSpinner 的值设置为特定日期

    我有一个JSpinner我添加到JPanel我想将其时间设置为 GregorianCalendar calendar JSpinner spinner new JSpinner spinner setModel model pom add
  • 单元测试组合服务方法

    我正在为一个类编写 junit 单元测试 该类使用以下方法实现公开的接口 public Set
  • 在 Java 中从 SOAPMessage 获取原始 XML

    我已经在 J AX WS 中设置了 SOAP WebServiceProvider 但我无法弄清楚如何从 SOAPMessage 或任何 Node 对象获取原始 XML 下面是我现在获得的代码示例 以及我试图获取 XML 的位置 WebSe
  • 迁移到Java 9或更高版本时是否需要切换到模块?

    我们目前正在从 Java 8 迁移到 Java 11 但是 升级我们的服务并没有我们预期的那么痛苦 我们基本上只需要更改我们的版本号build gradle文件和服务都顺利启动并运行 我们升级了库以及使用这些库的 微 服务 到目前为止没有问
  • Android WebView文件上传

    我正在开发一个 Android 应用程序 基本上它是一个WebView和一个进度条 Facebook 的移动网站 m facebook com 已加载到WebView 当我单击 选择文件 按钮上传图像时 没有任何反应 我已经尝试了所有的解决
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA
  • 关于Java泛型的一些问题

    假设我有以下接口和实现类 interface Foo
  • Android volley使用RequestFuture.get()时出现超时异常

    在我的片段中 我尝试使用 TMDB 的开放电影数据库来获取有关 正在播放 电影的详细信息 如果我使用 RequestFuture get time TimeUnit 方法来执行此齐射请求 我总是会收到超时错误 如果我在 Safari 中手动
  • LocalDate 减去 period 得到错误的结果

    LocalDate减去一个Period 如 28年1个月27天 得到错误的结果 但减去一个Period 只有天单位 如 10282 天 得到正确的结果 有什么需要注意的吗 public static void main String arg
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • Cucumber DataTable 错误 - io.cucumber.datatable.UndefinedDataTableTypeException:无法将 DataTable 转换为 cucumber.api.DataTable

    尝试使用 cucumber selenium java intelliJ 运行场景 但在其中一个步骤中出现有关 DataTable 的错误 在我开始使用测试运行程序并更改周围的一些内容之前 数据表工作正常并正确转换该步骤的参数 但我就是无法
  • Android 解析 JSON 卡在 get 任务上

    我正在尝试解析一些 JSON 数据 我的代码工作了一段时间 我不确定我改变了什么突然破坏了代码 当我运行代码时 我没有收到任何运行时错误或警告 我创建一个新的 AsyncTask 并执行它 当我打电话时 get 在这个新任务中 调试器在此行
  • 检查 Ruby 上的浏览​​器控制台输出

    如何检查浏览器控制台是否有错误 例如 我用 Selenium 启动了浏览器 firefox 的 chrome 并且用 Selenium WebDriver 做了一些操作 之后我想知道网络控制台中是否有任何错误 我尝试接受控制台错误 例如 d
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • 使用自定义比较器在 Java 中创建 SortedMap

    我想创建一个TreeMap在 Java 中具有自定义排序顺序 排序后的键是字符串 需要根据第二个字符进行排序 这些值也是字符串 示例地图 Za FOO Ab Bar 您可以像这样使用自定义比较器 Comparator
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • 如何使用注释处理 Hibernate 和 Spring 中的连接查询?

    我正在使用 Spring 和 Hibernate 以及 MySQL 开发应用程序 我是 Hibernate 新手 完成了基本任务 现在我需要在选择查询中应用联接以使用注释从多个表中获取数据 我已经搜索过但仍然没有任何想法 这是我的数据库表和
  • @Embeddable 中的 @GenerateValue

    我已将实体的 id 分离到一个单独的 Embeddable 类中 该实体如下 Entity Table name users public class Users EmbeddedId private Users pk id private

随机推荐

  • 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 处理失败断言的最佳方法 我本以为这是一个常见且核心的功能 我想做的就是 寻找一个元素 如果在场 告诉我 如果不在场 告诉我 我想向非技术受众展示结果 因此让它抛出带有完整堆栈跟踪的