问题:您如何使用多次创建的自定义元素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测试多个自定义元素。
任何帮助将不胜感激:)
答案 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以供以后使用,第一种方法会更好。