量角器中嵌套承诺的 return 元素如何
How return element of nested promise in protractor
我在量角器中创建了以下函数:
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
我需要 return 匹配文本条件的项目的功能,然后单击该元素,如上例所示。
使用map
获取单个元素可能不是最好的方法。 map
returns 一个基于每个项目的 returned 值的新数组。
考虑使用 for...or
甚至经典的 for
循环遍历每个项目,并使用 async / await
等待每个 item.getText()
解决后再继续下一项。然后如果等待的结果等于 textToSearch
return item
对象。否则循环后returnnull
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;
});
}
我在量角器中创建了以下函数:
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
我需要 return 匹配文本条件的项目的功能,然后单击该元素,如上例所示。
使用map
获取单个元素可能不是最好的方法。 map
returns 一个基于每个项目的 returned 值的新数组。
考虑使用 for...or
甚至经典的 for
循环遍历每个项目,并使用 async / await
等待每个 item.getText()
解决后再继续下一项。然后如果等待的结果等于 textToSearch
return item
对象。否则循环后returnnull
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;
});
}