Testing 使用无元素id的硒测试Angularjs
我们的团队正在使用AngularJS开发一个web应用程序。对于测试,我们使用Jasmine进行单元测试和angular-e2e测试。那很好。然而,我们的QA团队今天联系我们说,他们试图使用selenium来测试web应用程序,但由于我们没有为大多数DOM元素定义ID,因此面临问题。我们对此做了一些研究,但没有运气。是否有人可以建议一种很好的方法来进行selenium测试,而不需要我们为了使用selenium而显式地添加所有ID?谢谢 更新Testing 使用无元素id的硒测试Angularjs,testing,angularjs,selenium,Testing,Angularjs,Selenium,我们的团队正在使用AngularJS开发一个web应用程序。对于测试,我们使用Jasmine进行单元测试和angular-e2e测试。那很好。然而,我们的QA团队今天联系我们说,他们试图使用selenium来测试web应用程序,但由于我们没有为大多数DOM元素定义ID,因此面临问题。我们对此做了一些研究,但没有运气。是否有人可以建议一种很好的方法来进行selenium测试,而不需要我们为了使用selenium而显式地添加所有ID?谢谢 更新 我们开了一些会议,最后将ID插入到元素中,以确保测试的
我们开了一些会议,最后将ID插入到元素中,以确保测试的健壮性。感谢大家的回答:)如果您使用的是Selenium WebDriver,有很多方法可以在页面上查找元素。就灵活性而言,WebDriver可能是更好的方法之一(尽管它可能很快变得丑陋),但WebDriver还允许您使用类名、标记名、名称、链接文本和CSS
我们现在在工作中也遇到了同样的情况。 正如本次讨论中提到的,我们比较了两种可能的方法来解决这个问题:
我们到底做了什么?在相关元素中,名为
datahook
的属性添加了正确的值来标识他。效果很好。这是可能的。是的,请参阅下面的答案。但是,请注意,使用xpath
或css选择器构建的测试将比使用适当的元素唯一id
构建的测试更脆弱。感谢您的注意!那么,在这种情况下,为所有元素引入唯一的ID是否更好?目前我们团队中有两种想法,一种是,我们不应该仅仅为了一个支持工具而对应用程序进行太多的修改(通过引入大量ID);第二,引入入侵检测系统既不难也没有破坏性,如果它解决了问题,那为什么不呢。这两种想法对我们来说都是合理的,在这种情况下,哪种方式更好?谢谢你指出!就我个人而言,我没有使用Selenium WebDriver的经验,因此对此我不是很确定,我将再次联系我们的QA团队:)