CasperJS getElementsByXPath只返回第一个元素

lea*_*eah 7 javascript casperjs

我使用以下代码获取第一个表行中的所有表格单元格.我想检查每个表格单元格的innerHTML.但是在此函数返回的对象中,只有第一个表单元格实际存在,所有其他属性都为null:

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

utils.dump(firstRow);
Run Code Online (Sandbox Code Playgroud)

utils.dump的输出是:

[
    {
        "abbr": "",
        "align": "",
        "attributes": {...}
    },
    null,
    null,
    null
]
Run Code Online (Sandbox Code Playgroud)

我也尝试过utils .findAll,它也一样.我如何获得所有匹配的元素?

NiK*_*iKo 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);
Run Code Online (Sandbox Code Playgroud)