2015-06-20 69 views
1

AngularJS:警報彈出量角器:gettext的()不起作用[無法從跨度獲取文本標題]

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

     }); 

問題:無法從元素中獲取文本 我嘗試了很多方法來識別模型標題上的「文本」,但無法成功獲取來自元素的文本。問題看起來像元素沒有被識別。有人可以幫我解決這個問題。

+0

你能引用實際的錯誤嗎?給'then>添加一個錯誤處理程序並打印錯誤。 – Sulthan

+0

CSS選擇器看起來正確。控制檯上打印什麼內容?你確定頁面上沒有更多的'模態頭'元素嗎?(例如不可見)? – alecxe

+0

'失敗: 1)現場離港董事會作爲用戶,我可以在公共汽車站添加警報 消息: 預計將包含'添加常規警報'。 Stacktrace: 錯誤:在[對象對象]處的預期失敗 。 (C:\ Users \ Tests \ tests \ AcceptanceScenariosLDB.js:71:42) at [object Object]位於C:\ Users \ Tests \ node_modules \ protractor \ node_modules \ jasminewd \ index.js:94:14 。 webdriver.promise.ControlFlow.runInNewFrame_'' – MathurS

回答

2

錯誤確認後,您的選擇器正在返回.modal標頭中的兩個跨度。您可以嘗試捕捉它們並指定一個(注意:我沒有測試過這些):

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)'); 
+0

@Btine感謝您的建議, – MathurS

+0

1.第一種方法:當使用** get(0)**拋出異常未識別方法。 2.第二種方法**嘗試:不**爲我工作。現在文本斷言正在通過。 注意:我也看到你在評論中使用了** $$ **。我在整個測試中都沒有使用這些。他們是否特定於任何語言?如果這是量角器測試的最佳做法,請分享一些帖子,我可以從中獲得有關此操作員的詳細信息。 – MathurS

+1

'$'和'$$'是'element()'和'element.all()'的量角器快捷鍵。他們__看起來像,但不是,jQuery。 https://angular.github.io/protractor/#/api?view=build$ – Brine

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