尝试将 e2e 代码移动到函数中但没有成功
Trying to move e2e code into a function with no success
问题是由于 promise 解决,我传入了一个 xPath 用于所有要搜索的元素以及一个要搜索的字符串,我想要元素 returned。这是代码:
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]));
});
};
点击作品的注释行。它可以看到元素并单击它。我想 return 将元素发送给调用者,然后调用者会点击。
如果 return 不在 .then 部分中,那么 return 发生得太快并且 z = 0。现在的情况是,没有任何 returned。
你的函数findListItem
没有return值,在itemList.then
之前添加return
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);
}
}
问题是由于 promise 解决,我传入了一个 xPath 用于所有要搜索的元素以及一个要搜索的字符串,我想要元素 returned。这是代码:
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]));
});
};
点击作品的注释行。它可以看到元素并单击它。我想 return 将元素发送给调用者,然后调用者会点击。
如果 return 不在 .then 部分中,那么 return 发生得太快并且 z = 0。现在的情况是,没有任何 returned。
你的函数findListItem
没有return值,在itemList.then
return
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);
}
}