E2E按ID

时间:2016-09-20 13:38:15

标签: javascript aurelia e2e-testing

问题:您如何使用多次创建的自定义元素E2E测试SPA,并且能够通过unqiue ID检索它们?

我们遇到的问题是唯一标识自定义元素。因此,您不能将id放在自定义元素中,如下所示:

<customelement id="MyCustomElement"></customelement>

因为您将多次实例化自定义元素,所以id将被添加两次到DOM。

Aurelia使用量角器作为E2E测试工具。包括Aurelia风味的定位器来检索/检查value.bind =“VMproperty”语法。 elment(by.valueBind(“VMproperty”))不适用于具有VMProperty的多个自定义元素。

我们正在考虑创建一些包含父ID的痕迹,为该特定自定义元素创建一个唯一的ID。

我相信人们会将Aurelia用于更大的项目/网站,并要求进行适当的端到端测试。 Aurelia HUB上的示例:http://aurelia.io/hub.html#/doc/article/aurelia/testing/latest/end-to-end-testing/5适用于初始设置,但没有说明如何对E2E测试多个自定义元素。

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

听起来你可以使用$('#parentID customelement')从父元素向下走到自定义元素(如果只有其中一个)。

如果父级中有多个自定义元素,则可以使用$('#parentID').$$('customelement')获取所有自定义元素并遍历ElementArrayFinder。

如果您不必担心其他父元素中的自定义元素,您甚至可以使用$$('customelement')在ElementArrayFinder中抓取所有元素。

当你不知道订单时,要仔细检查ElementArrayFinder中的每个元素,我倾向于采用两种方式。

第一种方式将ElementArrayFinder过滤到你想要的ElementFinder:

var item = $$('.someclass').filter((elem)=>{
    return elem.isWhatIWant(); //chose any qualifier that returns a boolean
}).first();
expect(item.isWhatIWant()).toBeTruthy();

第二种方式结束并检查每个元素:

$$('.someclass').each((elem)=>{
    expect(elem.isWhatIWant()).toBeTruthy();
})

我更频繁地使用第二种方式,因为你总是可以在每个中添加限定符以确定应该检查哪些元素,但是如果你想保存ElementFinder以供以后使用,第一种方法会更好。