7

次のコードを使用して、最初のテーブル行のすべてのテーブル セルを取得します。次に、すべてのテーブル セルの innerHTML を確認したいと思います。しかし、この関数によって返されるオブジェクトでは、最初のテーブル セルだけが実際にそこにあり、他のすべてのプロパティは null です。

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

utils.dump(firstRow);

utils.dump からの出力は次のとおりです。

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

utils .findAllでも試しましたが、同じでした。一致したすべての要素を取得するにはどうすればよいですか?

4

1 に答える 1

4

Casper/PhantomJSevaluate()関数では、ネイティブ DOM 要素と要素のリストを JSON シリアル化可能なものにマップする必要があります。

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);
于 2012-11-18T20:33:56.877 に答える