E2E按id测试多个自定义元素



问题:您如何使用多次创建并能够通过唯一ID检索它们的许多自定义元素对SPA进行E2E测试?

我们遇到的问题是唯一地标识自定义元素。因此,您不能像这样在自定义元素中放置id:

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

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

Aurelia使用量角器作为端到端测试工具。包括奥蕾莉亚风味定位器来检索/检查价值。绑定= " VMproperty "语法。元素(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测试。

任何帮助都将是感激的:)

这听起来就像你可以用$('#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以供以后使用,第一种方法可能更好。

最新更新