首页 > 解决方案 > 从页面上的多个元素输出文本 - 量角器,Javascript

问题描述

我正在研究 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]

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

标签: javascriptprotractor

解决方案


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

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]);
     }
  });

推荐阅读