测试自动化 html 元素选择器。元素 ID 或 DataAttribute [关闭]

2023-11-22

我目前正在将一些 ID 放置在 UI 测试自动化的元素上。这些 ID 仅用于测试。我应该添加数据属性而不是可能使其对未来的开发人员更具可读性(data-testHandle =“mybutton”)还是应该坚持使用ID。

w3.org 说:

自定义数据属性旨在存储私有的自定义数据 没有更合适的页面或应用程序 属性或元素。

我倾向于保留 ID,但我的某些部分认为未来的开发人员会认为 ID 未被使用并删除它们。

这里有任何最佳实践。谢谢。


这接近于基于意见,这里是应该有助于做出选择的摘要。

你为什么要使用ID属性:

  • 这是一个common进行测试自动化的每个人都熟悉定位元素的方法
  • 这通常是fastest定位页面上元素的方法,因为 selenium 会将其归结为执行document.getElementById()它是由现代浏览器优化的(不过,通常端到端 UI 测试的性能并不重要)
  • it is a built-in每个 selenium 语言绑定中的定位器
  • 如果您使用 Firebug 或 Chrome 开发工具 - CSS 选择器和 XPath 生成工具通常会使用以下功能提供更强大的定位器id尽可能使用元素的 s
  • 您将构建更短的 CSS 选择器和 XPath 表达式。例如。#myid .someclass相对于[automation-id=myid] .someclass.

为什么要使用自定义属性:

  • 如果你要添加,比如说,automation-id属性到所有所需的元素,您将在某种程度上将其命名空间/范围扩展到测试自动化 - 每个人都可以从属性名称中知道它的用途。这意味着,您将大大减少开发人员故意更改属性的机会,而不是id属性,它也可以并且通常也用于应用程序客户端逻辑(参考this and this answer)

另外,这里还有一些相关主题:

  • 使用 Selenium 时向所有内容添加 ID 是标准做法吗?
  • 使用 webdriver 查找元素的最佳且最快的方法是什么? By.XPath 或 By.ID 还是其他?为什么?
  • 在 Selenium 测试中识别元素比 ID 更好的东西
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试自动化 html 元素选择器。元素 ID 或 DataAttribute [关闭] 的相关文章

随机推荐

  • 如何使用 powershell 压缩超过 2 GB 的文件?

    我正在开发一个项目来压缩从几个 mb 到几个 GB 大小的文件 我正在尝试使用 powershell 将它们压缩成 zip 我遇到的主要问题是使用压缩存档对单个文件大小有 2 GB 上限 我想知道是否有另一种方法来压缩文件 Edit 因此
  • jQuery .change() 事件在 IE 中未触发

    我有一个对话框 它执行依赖于三个输入字段的计算 当它们中的任何一个发生更改时 它会检查它们是否全部已填充 如果是 则进行处理并给出响应 它在 FF Chrome Opera 等中工作得非常好 但在任何版本的 IE 中它都会停止工作 我的 j
  • 什么时候'.'正则表达式中不匹配?

    我遇到了以下问题 简化 我写了以下内容 Pattern pattern Pattern compile Fig String s readMyString Matcher matcher pattern matcher s 在读取一个字符串
  • 与 pyplot 中三个子图中的两个共享 yaxis 标签

    我有以下代码可以生成所示的图 mport matplotlib pyplot as plt import matplotlib gridspec as gridspec import numpy as np One range 1 10 T
  • Meteor 1.3 NPM:意外的保留字导入

    我正在尝试遵循这里的指南 https guide meteor com using packages html 安装一些节点包 然后尝试将它们导入我的methods js文件 但我收到以下错误 W20160423 15 08 57 338
  • 用字符串方法计算单词数?

    我想知道如何编写一个方法来仅使用 charAt length 或 substring 等字符串方法来计算 java 字符串中的单词数 循环和 if 语句都可以 我真的很感谢我能得到的任何帮助 谢谢 即使有多个空格以及前导和 或尾随空格和空行
  • 无法使用 c# 导航到 Windows Metro 应用程序上的页面

    When my UserLogin页面加载时 我想检查用户数据库 如果它不存在或无法读取 我想将其定向到NewUser page protected override void OnNavigatedTo NavigationEventAr
  • Quartz Scheduler:在每个集群节点上触发一些作业,有些作业每个集群只触发一次

    我在集群环境中使用 Quartz Scheduler 作为 Spring bean 我有一些用 NotConcurrent 注释的作业 它们在每个集群中运行一次 即仅在一个节点中 仅在一个线程中 现在我需要在集群的每个节点上运行一项作业 我
  • 如何在 JUnit 4 中运行属于某个类别的所有测试

    JUnit 4 8 包含一个名为 类别 的不错的新功能 它允许您将某些类型的测试分组在一起 这非常有用 例如对慢速和快速测试进行单独的测试运行 我知道其中提到的内容JUnit 4 8 发行说明 但想知道如何实际运行用特定类别注释的所有测试
  • 使用 Ansible 安装软件包时如何自动接受条款?

    安装 pkgs Ansible 时失败 因为需要接受许可条款 如何通过以下方式自动接受条款ansible playbook hosts client1 remote user ansible become True tasks name t
  • 根据内容调整 UILabel 的大小

    我有一个 UILabel 他的文字大小有属性 title adjustsFontSizeToFitWidth YES 这阻止我使用标准方法来调整 UILabel 的大小 我在另一篇文章中读到我应该使用这个函数 sizeWithFont mi
  • 设置 HTTP 请求“内容类型”

    如何设置 HTTP 请求的内容类型 我试过这个 headers Accept application xml headers Content Type application xml curl setopt ch CURLOPT HTTPH
  • 升级到 RC 6 和 RxJS Beta 11 后,flatMap 丢失

    升级到 RC6 后 电子邮件受保护 我似乎缺少 Observable 对象的一些扩展 flatMap 操作符消失了 mergeMap 也不在这里 我现在只看到几个操作员 知道我缺少什么吗 我想现在你需要单独导入运算符 如果你往里面看 nod
  • 我应该在 C++ 程序中包含 吗?

    我应该在 C 程序中包含什么 stdio h or cstdio 为什么 为什么两个头文件提供相同的功能 标准对此有何规定 我应该如何包含其他此类标头 是否有我应该遵循的基本规则 考虑以下程序 样本1 include
  • 核心数据布尔属性 NSNumber 不记得它是布尔值

    我有一个模型 其属性如下所示 当我设置它的值时 例如 model isResolved YES 保存在模型中的 NSNumber 忘记 它是一个布尔值 NSLog strcmp self isResolved objCType encode
  • Vue3-使用 Vitest toHaveBeenCalled() 方法

    我正在使用 Composition API 运行 vue3 应用程序setup hook 我使用 Vitest 作为单元测试框架 v 0 6 1 我有以下示例组件 src components MyComponent vue
  • OpenCV 3.2 CUDA 支持 python

    我刚刚安装了 OpenCV 3 2 按照 CUDA 支持的说明进行编译http www pyimagesearch com 2016 07 11 compiling opencv with cuda support 我只是想知道如何检查我的
  • xsl 删除所有非数字字符和前导 1

    我需要将传入的电话号码字符串转换为不包含任何非数字字符的标准化格式 并删除前导数字 如果为 1 例如 1 222 333 4444 x 5555 变为 22233344445555 在此先感谢您的帮助 一 XSLT 1 0解决方案 这种转变
  • Java 安装在 Mac OS X 上的什么位置?

    我在 Mac OS 10 7 5 上下载了 Java 7u17here并成功安装它 为了进行一些 JNI 编程 我需要知道 Java 安装在我的 Mac 上的位置 我以为里面 Library Java JavaVirtualMachines
  • 测试自动化 html 元素选择器。元素 ID 或 DataAttribute [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我目前正在将一些 ID 放置在 UI 测试自动化的元素上 这些 ID 仅用于测试 我应该添加数据属性而不是可能使其对未来的开发人员更具可读性 data testHandle mybutto