我正在研究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]
我是新手,所以如果看起来很傻,请提出这个问题。
答案 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]);
}
});