2016-02-05 109 views
0

具有相当复杂的角度应用程序和许多页面(状态)和创建大量测试场景的条件部分,我需要执行e2e测试。我厌倦了像'div.SomeComponent> ul:nth-​​child(2)> ...'等嵌套选择器,甚至使用BEM namings(特别是当应用程序正在发展,并且很容易通过少量更改html来破坏测试结构体)。E2E测试中的自定义类或属性

问题是,你们会选择创建一些虚拟(空)类还是数据* attrs来简化量角器(或常规)选择器,而忽略语义?有什么选择?

回答

0

为避免每次开发人员更改css时更改元素定义,并避免使用长css字符串来选择元素,可以尝试通过其他方式(id,className,model等)引用它们。例子见https://github.com/angular/protractor/blob/master/docs/locators.md。我个人最喜欢的是使用元素(by.css('[ng-click =“executeSomeAction()”]')),因为这很可能不会随任何应用程序更新而改变。它也适用于其他指令。

至于测试大量页面和元素的应用程序,最好在类中定义元素,然后根据需要在测试规范中调用它们。这减少了您的规格中的代码,并使它们更易于阅读。您可能还想为您的测试执行的操作/功能创建一个单独的文件。

希望这有助于回答你的问题。

+1

我完全同意量角器定位器,其实我最喜欢的是使用元素(by.model(modelName))。 案例是测试人员(不是开发人员)正在使用一些其他测试框架 - 硒,groovy。尽管选择器会非常相似,但我们在页面上有几个非常通用的组件。假设我们有5个,但首先有条件地显示。没有像'componentName1','componentName2'等虚拟类,或者有一些特殊的数据* attrs,他们发现很难挂钩到第n个组件,因为'n'是动态的。 – adam