Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 使用无元素id的硒测试Angularjs_Testing_Angularjs_Selenium - Fatal编程技术网

Testing 使用无元素id的硒测试Angularjs

Testing 使用无元素id的硒测试Angularjs,testing,angularjs,selenium,Testing,Angularjs,Selenium,我们的团队正在使用AngularJS开发一个web应用程序。对于测试,我们使用Jasmine进行单元测试和angular-e2e测试。那很好。然而,我们的QA团队今天联系我们说,他们试图使用selenium来测试web应用程序,但由于我们没有为大多数DOM元素定义ID,因此面临问题。我们对此做了一些研究,但没有运气。是否有人可以建议一种很好的方法来进行selenium测试,而不需要我们为了使用selenium而显式地添加所有ID?谢谢 更新 我们开了一些会议,最后将ID插入到元素中,以确保测试的

我们的团队正在使用AngularJS开发一个web应用程序。对于测试,我们使用Jasmine进行单元测试和angular-e2e测试。那很好。然而,我们的QA团队今天联系我们说,他们试图使用selenium来测试web应用程序,但由于我们没有为大多数DOM元素定义ID,因此面临问题。我们对此做了一些研究,但没有运气。是否有人可以建议一种很好的方法来进行selenium测试,而不需要我们为了使用selenium而显式地添加所有ID?谢谢

更新


我们开了一些会议,最后将ID插入到元素中,以确保测试的健壮性。感谢大家的回答:)

如果您使用的是Selenium WebDriver,有很多方法可以在页面上查找元素。就灵活性而言,WebDriver可能是更好的方法之一(尽管它可能很快变得丑陋),但WebDriver还允许您使用类名、标记名、名称、链接文本和CSS


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

  • 尝试以不同的方式定位元素
  • 在需要的地方引入新属性,即使角度开发不需要这些属性
  • 我们决定使用(2)并在需要的地方添加ID。 以更好的方式测试健壮性,并且开销根本不显著


    我们到底做了什么?在相关元素中,名为
    datahook
    的属性添加了正确的值来标识他。效果很好。

    这是可能的。是的,请参阅下面的答案。但是,请注意,使用
    xpath
    css选择器构建的测试将比使用适当的元素唯一
    id
    构建的测试更脆弱。感谢您的注意!那么,在这种情况下,为所有元素引入唯一的ID是否更好?目前我们团队中有两种想法,一种是,我们不应该仅仅为了一个支持工具而对应用程序进行太多的修改(通过引入大量ID);第二,引入入侵检测系统既不难也没有破坏性,如果它解决了问题,那为什么不呢。这两种想法对我们来说都是合理的,在这种情况下,哪种方式更好?谢谢你指出!就我个人而言,我没有使用Selenium WebDriver的经验,因此对此我不是很确定,我将再次联系我们的QA团队:)