Javascript 量角器中的切片元件
在量角器中,我们可以通过以下方式通过索引从数组中获取单个元素: 但是,是否有可能以类似的方式从元素数组中分割出子数组 理想情况下,我们希望有如下内容:Javascript 量角器中的切片元件,javascript,selenium,selenium-webdriver,automation,protractor,Javascript,Selenium,Selenium Webdriver,Automation,Protractor,在量角器中,我们可以通过以下方式通过索引从数组中获取单个元素: 但是,是否有可能以类似的方式从元素数组中分割出子数组 理想情况下,我们希望有如下内容: var subelements = elements.slice(2, 5); // subelements is also an ElementArrayFinder // we can call "filter()", "map()" etc on subelements 我认为我们需要通过定义一个定制的量角器.ElementArrayF
var subelements = elements.slice(2, 5);
// subelements is also an ElementArrayFinder
// we can call "filter()", "map()" etc on subelements
我认为我们需要通过定义一个定制的
量角器.ElementArrayFinder.prototype.slice()
方法来扩展ElementArrayFinder
我也注意到了,但它没有被合并,也不再处于活动状态。恐怕没有现成的解决方案。 我相信您可以使用.filter()实现切片 我首先想到的是:
function slice (arrayFinder, from, to) {
return arrayFinder.filter(function(elem, index) {
if (index >= from && index < to) {
return true;
}
}
}
函数片(arrayFinder、from、to){
返回数组索引过滤器(函数(元素,索引){
如果(索引>=从&&index
您可以直接在已解析的承诺上使用slice:
$$('a')
.then(elements => elements.slice(3, 8))
.then(elements => console.log("Count ", elements.length));
您还可以扩展ElementArrayFinder
原型:
protractor.ElementArrayFinder.prototype.slice = function(begin, end) {
return this.then(elements => elements.slice(begin, end));
};
$$('a')
.slice(3, 8)
.then(elements => console.log("Count ", elements.length));
和一个过滤器:
$$('a')
.filter((e, i) => i >= 3 && i < 8)
.then(elements => console.log("Count ", elements.length));
$$('a')
.filter((e,i)=>i>=3&&i<8)
.then(elements=>console.log(“Count”,elements.length));
@alecxe不客气,顺便说一句,我喜欢读你关于量角器库的答案。我正在向你学习。继续发布更多答案!如果(…){return true;},请避免使用
如果可能,它会增加缩进级别,并且对于其他开发人员来说更复杂。在这里,您可以只使用返回索引>=from&&index
。这不起作用,因为element()和element.all()返回ElementFinder和ArrayElementFinder对象,而不是promises。所以$('a')。然后()将在没有此类方法的情况下失败..filter()还返回新的ArrayElementFinder@Xotabu4,是的。扩展的.slice
返回解析为值数组的承诺。要使其返回和ArrayElementFinder,只需将承诺包装到ArrayElementFinder
的新实例中即可。
$$('a')
.filter((e, i) => i >= 3 && i < 8)
.then(elements => console.log("Count ", elements.length));