如何在DrugatorJS/Jasmine中编写函数将元素链接在一起

如何在DrugatorJS/Jasmine中编写函数将元素链接在一起,jasmine,protractor,Jasmine,Protractor,我试图构建一个可以接受标记名数组的函数,通过传入标记名数组,例如['span',input','strong']我希望它返回一个链来搜索元素。例如,我想找到 element(by.tagName('span')) .element(by.tagName('input')) .element(by.tagName('strong')); 通过使用我的函数,如 public static getNestedElements = (arrayOfElementTags) => {

我试图构建一个可以接受标记名数组的函数,通过传入标记名数组,例如
['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
  };
publicstaticgetnestedelements=(arrayOfElementTags)=>{
常量临时元素arr=[];
for(设i=0;i
上面的函数显然很糟糕,不起作用

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(' ')));
}

我建议您保持逻辑简单,而不是使用函数

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.
创建一个函数是很麻烦的,它不会一直给你想要的结果