Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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
Javascript E2E按id测试多个自定义元素_Javascript_Aurelia_E2e Testing - Fatal编程技术网

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

Javascript E2E按id测试多个自定义元素,javascript,aurelia,e2e-testing,Javascript,Aurelia,E2e Testing,问题:如何使用多次创建并能够通过unqiue ID检索到的许多自定义元素测试SPA 我们的问题是唯一地标识自定义元素。因此,您不能像这样在自定义元素中放置id: <customelement id="MyCustomElement"></customelement> 因为在多次实例化自定义元素时,id将被添加到DOM中两次 Aurelia使用量角器作为E2E测试工具。包括用于检索/检查值的Aurelia风格定位器。bind=“VMproperty”语法。elment

问题:如何使用多次创建并能够通过unqiue ID检索到的许多自定义元素测试SPA

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

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

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

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

我们正在考虑创建某种面包屑,其中包括父id,为特定的自定义元素创建一个唯一的id

我相信人们会将Aurelia用于更大的项目/站点,并要求进行适当的E2E测试。Aurelia HUB上的示例:对于初始设置很好,但没有说明如何测试多个自定义元素


任何帮助都将不胜感激:)

听起来您可以使用
$(“#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();
})

我更经常使用第二种方法,因为您总是可以在each中添加限定符来确定应该检查哪些元素,但是如果您想保存ElementFinder以供以后使用,第一种方法可能会更好。

听起来您可以使用
$(“#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();
})

我更经常使用第二种方法,因为您总是可以在each中添加限定符来确定应该检查哪些元素,但是如果您想保存ElementFinder以供以后使用,第一种方法会更好。

mmm,您如何区分父元素中的两个customelements?作为您的第二个示例,您可能会获取第一个?如果要测试第二个customelement呢?如果两者都具有唯一ID,则可以测试第一个customelement和第二个customelement的内容。$$表示它正在作为ElementArrayFinder对象检索所有自定义元素。如果您知道顺序,那么当x是ElementArrayFinder时,可以使用x.get(index)获取特定的customelement。如果不知道顺序,可以使用x.then()调用对检索到的ElementFinder数组进行迭代。感谢您对$$用法和ElementArrayFinder的说明。假设您不知道ElementArrayFinder中customelements的顺序。您仍然需要检查您是否比较/检查了正确的customelement。我有一种感觉,我应该在生成时为customelement添加一些独特的内容,并能够对每个customelement进行过滤和测试。其他SPA E2E如何测试?webapp范围内的唯一id?我在回答中添加了一些。就每个customelement的唯一id而言,它取决于您的实现。应该有一些标记让您知道要为每个customelement测试什么,但这通常可以由它们在DOM.mmm中的类或位置来确定。如何区分父元素中的两个customelement?作为您的第二个示例,您可能会获取第一个?如果要测试第二个customelement呢?如果两者都具有唯一ID,则可以测试第一个customelement和第二个customelement的内容。$$表示它正在作为ElementArrayFinder对象检索所有自定义元素。如果您知道顺序,那么当x是ElementArrayFinder时,可以使用x.get(index)获取特定的customelement。如果不知道顺序,可以使用x.then()调用对检索到的ElementFinder数组进行迭代。感谢您对$$用法和ElementArrayFinder的说明。假设您不知道ElementArrayFinder中customelements的顺序。您仍然需要检查您是否比较/检查了正确的customelement。我有一种感觉,我应该在生成时为customelement添加一些独特的内容,并能够对每个customelement进行过滤和测试。其他SPA E2E如何测试?webapp范围内的唯一id?我在回答中添加了一些。就每个customelement的唯一id而言,它取决于您的实现。应该有一些标记让您知道要为每个customelement测试什么,但这通常可以由它们在DOM中的类或位置决定。