2015-04-07 42 views
5

Tôi đã viết các bài kiểm tra e2e cho ứng dụng js góc của tôi và tôi không thể tìm ra điều này. Tôi đã có một bảng với dữ liệu trong đó. Tôi muốn trích xuất dữ liệu hàng đầu tiên.Thước đo góc: Đọc Nội dung bảng

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

Tôi đã làm điều này trong thước đo góc elementExplorer và nó in ra các giá trị của tất cả 3 cột

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

Nếu tôi làm điều này, nó in ra giá trị cột đầu tiên

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 

My Câu hỏi là, làm thế nào để tôi nhận được các giá trị của các cột khác?

+0

Bạn có xem xét cho mỗi cột a 'name', sau đó sử dụng' by.name() 'để lấy các cột cụ thể sau khi bạn có hàng đầu tiên (từ' (0) '.get)? – Aaron

Trả lời

6

Sử dụng all() kết hợp với map():

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

Sau đó, bạn có thể khẳng định nó là một loạt các văn bản cột:

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

Cảm ơn alexcxe. Điều đó hiệu quả. Làm cách nào để nhận các phần tử riêng lẻ của cellTexts. Ví dụ tôi muốn trích xuất "Văn bản thứ hai". Ngoài ra, "Văn bản thứ ba" sẽ là văn bản của nút mà tôi muốn nhấp vào. – JDunn

+0

@JDunn bạn có thể sử dụng 'get()': 'mong đợi (cellTexts.get (1)). ToEqual (" Văn bản thứ hai ");'. Nếu bạn cần phải xác định vị trí các nút trong td thứ ba: 'cells.get (2) .element (by.tagName ("nút")) click();'.. Hy vọng nó giúp. – alecxe

+0

tôi nhận được một thất bại: không xác định không phải là một chức năng cho cellTexts.get (1), phần nút bấm hoạt động tốt mặc dù – JDunn

5

Cách dễ nhất sẽ là như sau:

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

Tôi đã triển khai và nó đang hoạt động đối với tôi.

Các vấn đề liên quan