我完全不知道为什么使用.all
在.filter
列表中进行搜索为我提供了一个可以与.click
链接的ElementFinder
function findElem(name) {
return elemList.filter(function(elem, idx) {
return elem.element(by.css('some css here').getText().then(function(text) {
return text === name;
});
}).first();
}
但是当起诉类似但使用reduce
时却是这样:
function findElem(name, findPosition) {
return elemList.reduce(function(total, current, idx) {
return current.element(by.css('some css here').getText().then(function(text) {
if (text ==== name) {
return findPosition === undefined ? current : idx;
} else {
return total;
}
});
});
}
即使我使用相同的ElementFinder(至少在console.log中),我也无法将其与.click
一起使用,并且出现pageObject.findElem('name of element to find').click is not a function
的错误
答案 0 :(得分:0)
尝试这个:
function findElem(name, findPosition) {
return elemList.reduce((total, current, idx) => {
return current.$('some css here').getText()
.then((text) => {
if (text === name) {
return findPosition === undefined ? current : idx;
} else {
return total;
}
});
});
}
出现error pageObject.findElem('name of element to find').click is not a function
的原因是返回值不是ElementFinder
答案 1 :(得分:0)
感谢Oleksii的出色添加,但此功能运行良好:-) 我只是在稍后阶段错误地使用了它。