我的团队正在使用Selenium WebDriver,质量检查团队正在让开发人员将ID添加到几乎所有内容中。这是正常的还是Selenium足够灵活,可以使用提供的标记编写测试,而不必返回并添加ID?例如,如果您有一个类似项目的列表,则通常只对每个项目使用相同的类,而不在列表中的每个项目上放置唯一的ID。

评论

我过去与团队一起使用的一种替代方法是创建专门用于自动化的CSS类:qa-accept-button,qa-firstname等。开发人员可能会发现它不如ID那么引人注目,并且只要知道为什么会更改它们,就不太可能更改它们。

#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)在需要时为您自动创建选择器。