从页面上的多个元素输出文本 - 量角器,Javascript

时间:2018-05-07 16:43:52

标签: javascript protractor

我正在研究Protractor自动化框架。我想从页面上的多个元素输出文本值。

所有元素都有一个我想在span标签中输出的文本。所以,我为我做了这个帮手:

static getAllSpansContainText (text: string) {
  return this.getAllSpanByText(text, true);
}

我在这里使用上述方法:

static get jobStasuses(){
    return CommonPage.getAllSpansContainText('ACCEPTED');    
}

在我的测试课上,我使用了这个:

console.log('Job Statuses: '+ffcPage.jobStasuses);

我希望这会打印出文字“接受”'它在页面上出现的次数。但我明白了:

Job Statuses: [object Object]

我是新手,所以如果看起来很傻,请提出这个问题。

1 个答案:

答案 0 :(得分:0)

您需要解决承诺。 element.all返回一个promise,这就是为什么你得到[object]。所以你需要使用.then(function(resolved_object));,因为你有多个元素,你需要通过按下面代码中所示的元素来循环它。您将再次需要解析currentElement.getText(),因为它也会返回一个promise。代码片段如下。希望它有所帮助

var elementBySpan = element.all(by.xpath('//span')); // returns a promise and not the array objects. you need to resolve it by using .then

  elementBySpan.then(function(varEleBySpan){
     for(i=0; i<varEleBySpan.length; i++){
       (function(currentElement){
          currentElement.getText().then(function(txtValue){
            console.log("Job Statuses: " + txtValue) // this will display the text value of each span in the page
        });   
       })(varEleBySpan[i]);
     }
  });