【问题标题】:Click an element based on a comparison in protractor根据量角器中的比较单击元素
【发布时间】:2016-07-05 20:15:10
【问题描述】:

在我使用量角器进行的 e2e 测试中,我从文件中获取数据并检查该数据是否存在于 UI 中。如果存在,则单击它。

页面大约有10个章节,我的文件有2个章节(表示为chapterName)。我想检查我的文件中的chapterNames是否在UI中,如果有,然后一一单击。我是使用下面的代码,但不知道如何进行循环

如何在量角器中做到这一点?

element.all(by.repeater('chapter in chapters')).filter(function (ele,index) {
                return ele.getText().then(function(text){

                return text === chapterName;

            });
            }).click(); 

【问题讨论】:

    标签: protractor


    【解决方案1】:

    你需要使用闭包函数来实现 promise 内部的循环。请看下面的示例代码。

     function clickChapterByName(){
       var chapterNames= ['chapter-1','chapter-2','chapter-3','chapter-4','chapter-5']
       for(i=0;i<chapterNames.length;i++){
           function closure(chapterName) {
               element.all(by.repeater('chapter in chapters')).filter(function (ele,index) {
                   return ele.getText().then(function(text){
                       return text === chapterName;
                   });
               }).click();
           }
           closure(chapterNames[i])
       }
      }
    

    【讨论】:

      【解决方案2】:

      不太确定我是否正确,但我认为您几乎就在那里:

      element.all(by.repeater('chapter in chapters')).filter(element=> {
                      return ele.getText().then(text=> text === chapterName);
                  });
              }).map(element=> element.click());
      

      .filter 的结果只会是匹配条件的元素,所以你会得到新的 ArrayElementFinder,你可以用 .map() 遍历它

      【讨论】:

        【解决方案3】:

        根据您的要求,您需要进行循环操作。因此您可以通过量角器 api 中提供的 each() 方法来实现。

        代码片段:

        element.all(by.repeater('chapter in chapters')).
                    each(function (ele, index) {//for looping purpose
                           ele.getText().then(function(text){
                                              if(text == inputChapterName){
                                                 ele.click();//click chapter is 
                                                }
                                           });
                   })
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-11
          • 1970-01-01
          • 2014-12-27
          相关资源
          最近更新 更多