2015-04-07 21 views
5

Açısal js uygulamasında e2e testleri yazıyorum ve bunu çözemiyorum. İçinde veri bulunan bir tablom var. İlk satır verilerini çıkarmak istiyorum. İletki: Okuma Tablo içeriği

<table> 
    <tr> 
     <td><\td> 
     <td><\td> 
     <td><\td> 
    </tr> 
</table> 

Ben protractors elementExplorer bu yaptım ve

element.all(by.repeater('item in items.list')).get(0).getText() 
James 
Byrne 
1 

Bunu yaparsanız, ilk sütun değerini yazdırır 3 sütun değerlerini yazdırır

element.all(by.repeater('item in items.list')).get(0).element(by.css('td')).getText() 
WARNING - more than one element found for locator By.cssSelector("td") - the first result will be used 
James 

Benim Soru, diğer sütunların değerlerini nasıl alabilirim? map() ile birlikte

+0

Her sütuna bir 'isim' verdikten sonra, ilk satırın ('.get (0)' konumundan) sonra belirli bir sütunu almak için 'by.name()' yi kullandığını düşündünüz mü? – Aaron

cevap

6

Kullanım all(): Sonra

var row = element.all(by.repeater('item in items.list')).first(); 
var cells = row.all(by.tagName('td')); 

var cellTexts = cells.map(function (elm) { 
    return elm.getText(); 
}); 

, sütunun metinlerinin bir dizi olmasını öne sürmek mümkün

expect(cellTexts).toEqual(["The first text", "The second text", "The third text"]); 
+0

Teşekkürler alexcxe. İşe yaradı. CellTexts öğelerinin bireysel öğelerini nasıl alabilirim. Örneğin "ikinci metin" yi çıkarmak istiyorum. Ayrıca "Üçüncü metin" tıklamak istediğim düğmenin metni olur. – JDunn

+0

@JDunn 'get()': 'expect (cellTexts.get (1)) .Equal (" İkinci metin ");' seçeneğini kullanabilirsiniz. Düğmeyi üçüncü td: 'cells.get (2) .element (by.tagName (" button ")) 'da bulmanız gerekiyorsa,();' tıklayın. Umarım yardımcı olur. – alecxe

+0

Başarısız Olduğum: undefined cellTexts.get (1) için bir işlev değil, düğme tıklandığında iyi çalıştı – JDunn

5

kolay yolu aşağıdaki gibi olacaktır:

var tabledata = element.all(by.css("./table")); 

// get rows 
var rows = tabledata.all(by.tagName("tr")); 

// get cell values 
var cells = rows.all(by.tagName("td")); 

expect(cells.get(0).getText()).toEqual("something") 
expect(cells.get(1).getText()).toEqual("something") 
expect(cells.get(2).getText()).toEqual("something") 

Uyguladım ve benim için çalışıyor.