2013-11-14 136 views
0

我有以下的端對端測試工作正常:打印文本

  var results = ptor.findElements(protractor.By. 
        repeater('phone in phones').column('phone.name')); 
      results.then(function(arr) { 
      expect(arr.length).toEqual(2); 
     }); 

取而代之的是數/長度,我想有一個測試,檢查該文本的結果,是這樣的:

expect(repeater('.phones li', 'Phone List').column('phone.name')). 
     toEqual(["Motorola XOOM\u2122 with Wi-Fi", 
       "MOTOROLA XOOM\u2122"]); 

但用量角器語法,我嘗試以下,但不走:

var results = ptor.findElements(protractor.By. 
       repeater('phone in phones').column('phone.name')); 
     results.then(function(arr) { 
     expect(arr.getText()).toEqual(....); 
    }); 

BU t我得到了一個沒有方法的getText()錯誤。 獲取「arr」數組中文本的方法是什麼?

這工作:

  ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name')) 
      .then(function(arr) { 
       arr[0].getText().then(function(text) { 
        console.log("*** first: "+text); 

       }); 
       arr[1].getText().then(function(text) { 
        console.log("*** second: "+text); 

        done(); 
       }) 
      }); 

回答

1

問題是在你的鏈接你的方法方式。元素查找只是返回WebElement。你真正要做的是getText()返回的promise對象。如果您希望在承諾解決後對文本進行操作,則需要將「then」調用鏈接到getText()調用的末尾。因此,而不是:

results.then(function(arr) { 
    expect(arr.getText()).toEqual(....); 
}); 

你真正想要的東西是這樣的:

results.getText().then(function(resultText) { 
    expect(resultText).toEqual(....); 
}) 
+0

最後的編輯我的方式做工作,但它獲得了整個行,​​而不僅僅是「phone.name」。所以現在我想弄清楚如何讓phone.name出現在arr [0] .getText()中,而不是整行 – bmw0128