所有html页面中硒中UI自动化所必需的ID

时间:2018-09-27 13:18:50

标签: selenium automation

在一个项目中,我们将使UI自动化,但是自动化团队建议我们必须在整个页面上使用ID,以便轻松实现那里的脚本的自动化。

我的问题是,为什么我们会在所有地方都使用ID?妨碍了HTML和CSS结构。

该网页可以自动运行,而无需使用HTML中的ID,是还是否?

2 个答案:

答案 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时遇到了一些缺点:

  1. 某些框架不建议使用它们或自动生成它们。 (此处https://www.javascriptstuff.com/use-refs-not-ids/https://www.quora.com/Are-IDs-a-big-no-no-in-the-CSS-worldhttps://dev.to/claireparker/reasons-not-to-use-ids-in-css-4ni4https://www.creativebloq.com/css3/avoid-css-mistakes-10135080https://www.reddit.com/r/webdev/comments/3ge2ma/why_some_people_dont_use_ids_at_all/中描述的ID可能存在的问题)
  2. 某些其他逻辑可能依赖于它们,因此出于自动化的需要而更改/添加它们可能会以某种方式意外影响其他应用程序逻辑。 您可以代替id使用的是其他一些属性。例如,在我们的项目中,我们已从id切换到名为dataSeleniumId的特定属性。它清楚地表明该属性仅是硒测试的使用情况。下一步,您可以在某人更改或删除dataSeleniumId属性的情况下在您的团队中添加一条规则,他应将该规则告知自动化测试团队。由于更改/删除此属性会导致测试失败,并且为了避免任何错误的失败,最好事先进行修复。

答案 1 :(得分:0)

对于自动化开发人员而言,更容易浏览html代码并查看特定按钮/文本字段/等的ID。以便在自动化测试中实现相关定位器。

在大多数情况下,项目开始收到重复的类或复杂的嵌套元素。由于编写了xpath或css选择器,请验证它们是否起作用,并且此定位器仅找到1个唯一元素,这使自动化开发人员的工作更加艰辛。

取决于团队领导和团队领导建议的代码风格。

回到问题上,是的,可以不使用id编写网站,但是如果目标是使网站的大部分自动化,则id可以为自动化开发团队提供很大的帮助。