2012-11-16 34 views
7

Tôi sử dụng mã sau đây để lấy tất cả các ô của bảng trong hàng của bảng đầu tiên. Sau đó tôi muốn kiểm tra innerHTML của mỗi ô bảng. Nhưng trong đối tượng được trả về bởi hàm này chỉ ô trong bảng đầu tiên là thực sự ở đó, tất cả các tài sản khác là null:CasperJS getElementsByXPath chỉ trả lại phần tử đầu tiên

firstRow = this.evaluate(function() { 
    return __utils__.getElementsByXPath('//tbody/tr[1]/td'); 
}); 

utils.dump(firstRow); 

Kết quả từ utils.dump là:

[ 
    { 
     "abbr": "", 
     "align": "", 
     "attributes": {...} 
    }, 
    null, 
    null, 
    null 
] 

Tôi cũng thử với utils .findAll và nó giống nhau. Làm thế nào tôi có thể nhận được tất cả các yếu tố phù hợp?

+0

câu trả lời đầu tiên ở đây trả lời câu hỏi của tôi: http://stackoverflow.com/ câu hỏi/10740907/get-all-table-rows-và-return-them-sử dụng-an-xpath-query-in-casperjs – leah

+0

Hãy xem điều này, điều đó sẽ giúp: http: // stackoverflow. com/questions/10740907/get-all-table-rows-và-return-chúng-sử dụng-an-xpath-truy vấn-trong-casperjs –

Trả lời

4

Với Casper/PhantomJS evaluate() chức năng, bạn có để ánh xạ phần tử DOM bản địa và danh sách các yếu tố để một cái gì đó JSON-serializable:

var firstRow = this.evaluate(function() { 
    var elements = __utils__.getElementsByXPath('//tbody/tr[1]/td'); 
    return [].map.call(elements, function(element) { 
     return element.outerHTML; 
    }); 
}); 

utils.dump(firstRow); 
Các vấn đề liên quan