2012-11-16 4 views
7

Używam następującego kodu, aby pobrać wszystkie komórki tabeli w pierwszym wierszu tabeli. Chciałbym następnie sprawdzić innerHTML każdej pojedynczej komórki tabeli. Ale w obiekcie zwrócony przez tę funkcję tylko pierwsza komórka tabeli jest rzeczywiście istnieje, wszystkie inne właściwości są nieważne:CasperJS getElementsByXPath zwraca tylko pierwszy element

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

utils.dump(firstRow); 

Wyjście z utils.dump jest:

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

Próbowałem też z utils .findAll i to było to samo. Jak mogę uzyskać wszystkie dopasowane elementy?

+0

pierwsza odpowiedź tutaj odpowiedzi na moje pytanie: http://stackoverflow.com/ pytania/10740907/pobieranie-wszystkich-tabel-wierszy-i-zwracanie-ich-używanie-an-xpath-zapytanie-w-casperjach – leah

+0

Spójrz na to, które powinno pomóc: http: // stackoverflow. com/questions/10740907/get-all-table-rows-and-returnurning-one-using-an-xpath-query-in-casperjs –

Odpowiedz

4

Z Casper/PhantomJS evaluate() funkcji, trzeba map rodzimych elementów DOM i listy elementów do czegoś 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);