在一个项目中,我们将使UI自动化,但是自动化团队建议我们必须在整个页面上使用ID,以便轻松实现那里的脚本的自动化。
我的问题是,为什么我们会在所有地方都使用ID?妨碍了HTML和CSS结构。
该网页可以自动运行,而无需使用HTML中的ID,是还是否?
答案 0 :(得分:1)
是的,没有ID的网页可以自动执行。例如,您可以在https://www.w3schools.com/cssref/trysel.asp上使用cssSelectors(请注意示例页面包含具有和不具有ID的元素)
在自动化中使用id进行元素的查找通常被视为最佳实践。如果您使用id,则自动化测试将独立于html结构,这基本上会使它们更稳定。
例如,在您的应用的第一个版本中,您可能将一些文本实现为
<p id="someTextId" class="someClass">Hello world</p>
,但有时可能会决定将其重写为(更改标签,甚至应用不同的类名)
<div id="someTextId" class="anotherClass">Hello world</div>
如果您依靠ID #someTextId
来定位元素,则测试仍将能够访问必要的元素并与之正确交互。如果您使用p
或.someClass
,即使从ui角度来看,相同的文本将在浏览器中显示,您的自动化测试也将找不到元素。
我们在使用id时遇到了一些缺点:
id
切换到名为dataSeleniumId
的特定属性。它清楚地表明该属性仅是硒测试的使用情况。下一步,您可以在某人更改或删除dataSeleniumId
属性的情况下在您的团队中添加一条规则,他应将该规则告知自动化测试团队。由于更改/删除此属性会导致测试失败,并且为了避免任何错误的失败,最好事先进行修复。答案 1 :(得分:0)
对于自动化开发人员而言,更容易浏览html代码并查看特定按钮/文本字段/等的ID。以便在自动化测试中实现相关定位器。
在大多数情况下,项目开始收到重复的类或复杂的嵌套元素。由于编写了xpath或css选择器,请验证它们是否起作用,并且此定位器仅找到1个唯一元素,这使自动化开发人员的工作更加艰辛。
取决于团队领导和团队领导建议的代码风格。
回到问题上,是的,可以不使用id编写网站,但是如果目标是使网站的大部分自动化,则id可以为自动化开发团队提供很大的帮助。