我正在尝试通过传递标记名数组(例如['span', 'input', 'strong']
)来构建一个可以接受标记名数组的函数,我希望它返回一个链来搜索元素。例如,我想找到...
element(by.tagName('span'))
.element(by.tagName('input'))
.element(by.tagName('strong'));
使用我的函数...
public static getNestedElements = (arrayOfElementTags) => {
const temporaryElementArr = [];
for (let i = 0; i < arrayOfElementTags.length; i++ ) {
temporaryElementArr.push(element(by.tagName(arrayOfElementTags[i])));
}
for (let j = 0; j < temporaryElementArr.length; j++) {
if (j !== temporaryElementArr.length) {
temporaryElementArr[j] = temporaryElementArr[j] + '.';
}
}
return temporaryElementArr
};
以上功能显然很烂,无法正常工作。
答案 0 :(得分:0)
element(by.tagName('span')).element(by.tagName('input')).element(by.tagName('strong'));
// equivalent to element(by.css('span input strong'))
因此,您可以将所有带有空格的标签连接在一起以生成css选择器。并使用css选择器查找元素。如下完成。
public static getNestedElements = (arrayOfElementTags) => {
return element(by.css(arrayOfElementTags.join(' ')));
}
答案 1 :(得分:0)
我建议您保持逻辑简单,而不要使用函数。
element(by.tagName('span')).element(by.tagName('input')).element(by.tagName('strong'));
//It is a simple way to get the chained element provided by protractor api
documentation.
创建函数很麻烦,而且无法始终为您提供所需的结果。