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

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

孙恩
2023-03-14
问题内容

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

w3.org说:

定制数据属性旨在存储页面或应用程序专用的定制数据,对于这些数据,没有更多合适的属性或元素。

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

这里有任何最佳做法。谢谢。


问题答案:

这接近于基于意见,这是应该有助于做出选择的总结。

为什么要使用ID属性:

  • 这是一种 常见 的和熟悉的给大家做测试自动化 的方式来定位元素
  • 通常,这是在页面上定位元素的 最快 方法,因为硒会降低其执行速度document.getElementById(),而硒是由现代浏览器优化的(尽管,端到端UI测试的性能通常并不关键)
  • 它是每种硒语言绑定中的 内置 定位器
  • 如果您要使用Firebug或Chrome开发者工具-CSS选择器和XPath生成工具通常会id尽可能使用元素的s 提供更强大的定位器
  • 您将构建较短的CSS选择器和XPath表达式。例如#myid .someclass反对[automation-id=myid] .someclass

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

  • 例如,如果将automation-id属性添加到所有所需的元素,则将在某种程度上对名称空间/作用域进行测试自动化-每个人都将仅从属性名称知道这是什么。意思是,您将大大减少开发人员有意更改属性的可能性,而不是id属性,属性也可以并且通常也用于应用程序客户端逻辑(请参阅此和此答案)

另外,这是一些相关的线程

  • 使用Selenium时,是否在所有标准实践中都添加了ID?
  • 测试中识别元素的能力胜于ID


 类似资料:
  • 我想使用道具从标题h1-h6中选择,然后将样式和文本插入标题中。我现在有: 然后我意识到我以前从来没有自动选择元素类型,甚至不知道从哪里开始。这可以用反应来完成吗,怎么做?

  • 我有一个选择元素,里面有多个选项: 对于这里看到的每个选项元素,我都有另一个select元素。基本上,我在一个选择元素中列出了一系列音乐流派,在它下面,是与每一个“主流派”相关的子流派。 我想做的是使子体裁只有在相对体裁被选中时才可见。例如,如果用户选择“Pop”,我想向他们显示包含Pop子类型的相关选择字段。 我的HTML标记实际上是由WordPress插件生成的,不幸的是,我无法编辑它。也就是

  • 基本选择器是CSS中使用最频繁、最基础,也是CSS中最早定义的选择器。基本选择器包括元素选择器、类选择器、id选择器、群组选择器、通配选择器。 表 2-1 基本选择器 选择器 语法 功能描述 版本 元素选择器 E 选择指定类型的元素 1 类选择器 E.class 选择类型为E,且class属性值包含指定类名的元素 1 id选择器 E#id 选择类型为E,且id属性值为指定id的元素 1 群组选择器

  • 本文向大家介绍jQuery 选择元素的子元素,包括了jQuery 选择元素的子元素的使用技巧和注意事项,需要的朋友参考一下 示例 要选择元素的子代,可以使用children()方法。 更改元素所有子.parent元素的颜色: 该方法接受一个可选selector参数,该参数可用于过滤返回的元素。            

  • 伪元素选择器,并不是基于真正的元素,而是基于元素当前所具有的特性来选取元素。由于这些元素本身并不存在于文档中,只是基于元素的抽象,因此称作伪元素。 伪元素选择器是CSS 中已经定义好的选择器,不能由用户随便起名,只能按CSS规定的标准格式使用。语法格式为: 选择器:伪元素 { 属性: 值 } 伪元素选择器在CSS中一直存在,但CSS3对伪元素进行了一定的调整,把选择器和伪元素之间冒号,由CSS1和

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