如何返回量角器中嵌套promise的元素



我在量角器中创建了以下函数:

function getChildElementByText(parentElement, tagName, textToSearch)
{
return parentElement.all(by.tagName(tagName))
.then((items) => {
items.map( item => {
item.getText().then(text => {
if (text === textToSearch){
return item;
}
});
});
});
}

获取<select>元素的<option>元素的示例:

let myitem = selectorHelpers.getChildElementByText(clientIdSelect, 'option', 'ExampleText');
myitem.click();

这给了我以下错误:

Failed: myitem.click is not a function

我需要函数返回符合文本条件的项目,然后单击该元素,如上例所示。

使用map获取单个元素可能不是最好的方法。map根据每个项目的返回值返回一个新的数组。

考虑使用for...or甚至经典的for循环在每个项目上循环,并使用async / await等待每个item.getText()解析后再继续下一个项目。然后,如果等待的结果等于textToSearch,则返回item对象。否则循环后返回null

function getChildElementByText(parentElement, tagName, textToSearch) {
return parentElement.all(by.tagName(tagName))
.then(async items => {
for (const item of items) {
const text = await item.getText();
if (text === textToSearch) {
return item;
}
}
return null;
});
}

最新更新