量角器:getText()不起作用[无法从标题中的Span获取文本]

时间:2015-06-20 11:04:07

标签: angularjs protractor gettext angular-gettext

AngularJS:提示弹出

<div class="modal-header">
<h3>
<span class="firefinder-match" data-ng-show="dialog.stopOrService === 'STOP'" data-translate-values="{"days":"ALL_DAYS","time":"2015-06-20T08:39:46.654Z","stopOrService":"STOP","stopName":"Fairbairn Av after War Memorial Service [3473]","serviceList":[{"serviceNumber":"910","id":"6350571294206984726","name":"910 City via Majura Business Park(Net14NoAir"}],"selectedService":null,"receiveSituations":false,"processing":false}" data-translate="liveDepartures.alerts.addModal.stopHeader">Add a regular alert for upcoming buses at Fairbairn Av after War Memorial Service [3473]</span>
<span class="firefinder-match ng-hide" data-ng-show="dialog.stopOrService === 'SERVICE'" data-translate-values="{"days":"ALL_DAYS","time":"2015-06-20T08:39:46.654Z","stopOrService":"STOP","stopName":"Fairbairn Av after War Memorial Service [3473]","serviceList":[{"serviceNumber":"910","id":"6350571294206984726","name":"910 City via Majura Business Park(Net14NoAir"}],"selectedService":null,"receiveSituations":false,"processing":false}" data-translate="liveDepartures.alerts.addModal.serviceHeader">Add a regular alert for route </span>
</h3>
</div>

断言:使用getText()

        var pageHeader = element(by.css('.modal-header > h3 > span'))
        expect(pageHeader.getText()).toContain('Add a regular alert');
        pageHeader.getText().then(function(text){
            console.log("++++++++++++++++++++++++++++++++++++++" +text);

        });

问题:无法从元素中获取文字 我已尝试了多种方法来识别模型标题上的“文本”,但无法成功从元素中获取文本。问题看起来像元素没有被识别。有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

当错误确认时,您的选择器将返回.modal-header中的两个跨度。您可以尝试捕获它们并指定一个(注意:我没有测试过这些):

var pageHeader = $$('.modal-header > h3 > span');
expect(pageHeader.get(0).getText()).toContain('Add a regular alert');

或者在选择器上尝试其他方法。也许尝试:not只返回可见范围:

var pageHeader = $('.modal-header span:not(.ng-hide)'); 

答案 1 :(得分:0)

如警告所示,您有定位器找到的多个元素(数组),因此需要get(n)。你可以等到getText()承诺解决,最后去断言/期待。

var spansInPageHeader = element.all(by.css('.modal-header > h3 > span'));
spansInPageHeader.get(1).getText().then(function(text){
    expect(text).toContain('Add a regular alert');
});