CasperJS getElementsByXPath只返回第一个元素

我使用下面的代码来获取第一个表格行中的所有表格单元格。 然后,我想检查每个表格单元格的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,这是一样的。 我怎样才能获得所有匹配的元素?


通过Casper / PhantomJS evaluate()函数,您必须将原生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);
链接地址: http://www.djcxy.com/p/66263.html

上一篇: CasperJS getElementsByXPath only returning first element

下一篇: 2 lists, and finding maximum product from 2 lists