XPath查找在PhantomJS中不起作用

Joh*_*Doe 7 xpath phantomjs

我正在尝试让XPath与PhantomJS 1.9.2一起使用:

var getElementsByXPath = function(xPath) {
  return document.evaluate(
    xPath, document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
};
var root = getElementsByXPath("//div").iterateNext();
Run Code Online (Sandbox Code Playgroud)

这是在页面加载时执行的,并且始终返回null,而querySelector似乎正常工作:

var divs = page.evaluate(function(s) {
  return document.querySelector(s);
}, 'div');
Run Code Online (Sandbox Code Playgroud)

我在这个特定的XPath评估样本中是否遗漏了什么?

Joh*_*Doe 13

我终于发现调用document.evaluate必须包含一个page.evaluate调用,如下所示:

page.evaluate(function() {
    document.evaluate(
        '//div',
        document,
        null,
        XPathResult.ORDERED_NODE_ITERATOR_TYPE,
        null);
});
Run Code Online (Sandbox Code Playgroud)