【发布时间】:2018-05-01 15:54:00
【问题描述】:
问题是由于承诺解决,我为所有要搜索的元素传递了一个 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。按照现在的方式,没有返回任何内容。
【问题讨论】: