2012-11-16 5 views
7

Ich verwende den folgenden Code, um alle Tabellenzellen in der ersten Tabellenzeile zu erhalten. Ich möchte dann das innereHTML von jeder einzelnen Tabellenzelle überprüfen. Aber in dem Objekt durch diese Funktion nur die erste Tabellenzelle zurückgegeben wird, ist es tatsächlich, alle anderen Eigenschaften sind null:CasperJS getElementsByXPath nur das erste Element zurückgeben

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

utils.dump(firstRow); 

Die Ausgabe von utils.dump ist:

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

ich auch versucht, mit utils .findAll und es war das gleiche. Wie kann ich alle übereinstimmenden Elemente erhalten?

+0

die erste Antwort hier beantwortet meine Frage: http://stackoverflow.com/ Fragen/10740907/getting-all-table-Zeilen-und-Rückgabe-sie-mit-xpath-Abfrage-in-casperjs – leah

+0

Schauen Sie sich das an, das sollte helfen: http: // stackoverflow. com/questions/10740907/getting-all-table-rows-und-return-the-using-ein-xpath-query-in-casperjs –

Antwort

4

Mit Casper/PhantomJS evaluate() Funktionen, Sie haben nativen DOM-Elemente abzubilden und Listen von Elementen etwas 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);