#1 楼
这并不奇异。由于类名称更改或其他重构不太可能破坏测试,因此ID往往有助于创建更稳定的UI测试。而且,动态填充的列表在UI自动化中往往需要大量维护,并且具有可预测的ID可以对此提供帮助。正如squeemish所指出的那样,使用XPath不仅速度慢(而且如果发生任何超时,速度本身会破坏测试,这会导致测试变得脆弱),而且XPath也更容易受到UI更改的影响,从而再次增加了测试维护。 br />基本上,您的测试工程师可能会发现他们的测试UI自动化很脆弱。这是开发人员的一项改变,可以显着降低测试维护成本,从而减少测试新版本的周转时间。 UI测试的脆弱性很难管理,因此在您看到添加ID的好处之前,可能还需要解决其他问题。
#2 楼
我们发现开发人员倾向于随意更改ID。我们可以控制它在我们团队中发生的情况,但是当我们与其他团队的代码合并时,东西中断,xpath更改和css中断。 -automation]及其自己的ID。只要它随任何元素一起移动,我们总是可以找到它,并且它使我们的测试更加可靠。对一个人有用的东西,可能对另一个人不有用..
#3 楼
我尝试并尽可能使用ID。不同的客户可能使用不同的术语。与CSS相比,ID更改的可能性较小,因此我发现ID越多越好。这要求开发人员确保所有内容都具有ID,因此您将需要整个团队的支持。 (但是,对于可能始终具有ID的所有内容,这都是一种好习惯。)但是,如果页面上有很多该项目的实例,则某些项目将无法ID。对于这些,我发现最好的解决方案是拥有一个自定义标签并具有X-Path可以定位的HTML5自定义属性。这样,如果页面布局发生更改,它们就不太可能受到影响。
#4 楼
+1以支持Ethel Evans的回答。从长远来看,唯一的ID可以帮助UI自动化。例如,在此站点上,问题元素包含在<div class="question">...</div>
中,而所有答案都在
<div class="answer">...</div>
如果没有ID,则依靠语义CSS类名也是一个明智的选择
#5 楼
在使用Selenium时,是否将ID添加到所有标准实践中? br />在大多数从事Web开发的公司中,我通常会看到这样的标记决策主要是由两个组-应用程序和ux开发人员做出的。他们还需要ID和用于布局,ajax,样式的类。我观察到的最常见的做法是,质量检查必须使用其他两个小组在其中放置的标识符进行操作。
我试图在所有字段上寻求唯一的ID,但是开发人员和ux专家都有自己的需求首先得到解决,并且他们将优先处理。我还尝试了“仅将数据属性用于质量检查”,但是反馈是我们不希望将生产代码中的测试标记提供给用户。
所以,根据我的经验,标准做法是,通常,您必须在开发人员和ux给您的范围内工作。标记人员。
这意味着您需要更多地了解识别字段的好方法,并学会不做类似的事情
//tr/td/div/div/div/div/span
# XPath Too specific and thus too fragile, breaks when page layout changes
td.header
# CSS path Too general, applies to several elements.
>我称其为“金发姑娘”方法。不太笼统,不太具体,简短但独特的就是“恰到好处”。
评论
嗨,如果您能回答,这里还会有另一个问题,谢谢sqa.stackexchange.com/questions/46093/…
– MarkThomas52
20年11月1日,00:00
#6 楼
Selenium2 / WebDriver可以找到具有ID,名称,CSS,XPath,链接文本,部分链接文本或标记名称的元素。您需要通过使用findElementBy *标识要与之交互的元素来指定要与之交互的元素,有些正在使用的元素没有ID,因此在交互时会使用XPath。警告... XPath是最慢使用的标识符。
#7 楼
从开发人员手动将唯一ID注入所有重要的Web元素中,我看到的唯一好处是:它将使Selenium测试使您编写的代码更具可读性而不是使用CSS选择器。
使用ID,您可以创建一个非常适合使用录音和播放的环境,例如使用Selenium Builder,因为默认情况下,ID是Builder
录音的目标。因此,构建器不会退回创建
怪异的xpath或类名标识符。 ,那么使用css选择器等对大多数人来说就可以正常工作,特别是如果您使用浏览器插件(例如FirePath)在需要时为您自动创建选择器。
评论
我过去与团队一起使用的一种替代方法是创建专门用于自动化的CSS类:qa-accept-button,qa-firstname等。开发人员可能会发现它不如ID那么引人注目,并且只要知道为什么会更改它们,就不太可能更改它们。