使用没有元素id的Selenium测试Angularjs

时间:2013-08-16 14:41:59

标签: testing angularjs selenium

我们的团队正在使用AngularJS开发一个Web应用程序。为了测试,我们使用Jasmine进行单元测试和角度e2e测试。这很好。然而,我们的QA团队今天向我们询问他们是否尝试使用selenium来测试Web应用程序但面临问题,因为我们没有为大多数DOM元素定义ID。我们对此进行了一些研究,但没有运气。有人建议一个很好的方法来做硒测试,而不是让我们明确添加所有的ids只是为了使用硒?谢谢!

更新

我们召开了一些会议,最后在元素中插入了id,以确保测试的稳健性。谢谢大家回答:)

2 个答案:

答案 0 :(得分:5)

如果您使用的是Selenium WebDriver,则可以通过多种方式在页面上查找元素。 XPATH可能是灵活性方面更好的方法之一(虽然它可以很快变丑)但WebDriver也允许你使用类名,标签名,名称,链接文本和CSS。

Selenium WebDriver - Locate UI Elements

答案 1 :(得分:2)

我们现在的工作遇到了同样的情况。 正如本次讨论中所提到的,我们比较了可能的两种方法来克服这个问题:

  1. 尝试以不同方式定位元素。
  2. 在需要的地方引入新属性,即使Angular开发不需要它们。
  3. 我们决定使用(2)并在需要时添加ID。 更好地测试稳健性并且开销并不重要。

    我们做了什么?对于相关元素,添加了名为data-hook的属性,其中包含标识他的正确值。效果很好。