问题是由于承诺解决,我传入一个xPath,搜索所有要搜索的元素以及要搜索的字符串,我希望返回该元素。这是代码:
export class Library {
static findListItem(xPath: string, findItem: string): any {
let z = 0;
const allItemsXPath = xPath.split('[X]');
const itemXPath = xPath.split('X');
console.log(xPath + ' : ' + findItem);
const itemList = element.all(by.xpath(allItemsXPath[0] + allItemsXPath[1])).map(function (item) {
return item.getText();
});
itemList.then(function (itemText) {
console.log(itemText.length);
for (let k = 0; k < itemText.length; k++) {
itemFound = true;
console.log(itemText[k] + ' : ' + findItem);
if (itemText[k] === findItem) {
z = k + 1;
console.log('found ' + z);
}
}
}).then(() => {
console.log(itemXPath[0] + z + itemXPath[1]);
// element(by.xpath(itemXPath[0] + z + itemXPath[1])).click();
return element(by.xpath(itemXPath[0] + z + itemXPath[1]));
});
};
点击作品的注释行。它可以看到元素并单击它。我想将元素返回给调用者然后单击。
如果返回不在.then部分,则返回太快,z = 0.现在的方式,没有返回任何内容。
答案 0 :(得分:0)
您的函数findListItem
没有返回值,请在return
之前添加itemList.then
static findListItem(xPath: string, findItem: string): any {
...
return itemList.then(function (itemText) {
...
});
}
Library.findListItem(xxx, yyy).then(function(item){
return item.click();
})
我对您的下面的代码有一个问题,即找到匹配的项目,您将每个迭代比较itemText
的一个字符串与整个字符串findItem
。您确定可以通过以下代码找到匹配的。
for (let k = 0; k < itemText.length; k++) {
itemFound = true;
console.log(itemText[k] + ' : ' + findItem);
if (itemText[k] === findItem) {
z = k + 1;
console.log('found ' + z);
}
}