如何在CasperJS中使用XPath'评估功能

时间:2015-12-24 10:11:19

标签: javascript phantomjs casperjs

我们可以在document.querySelector函数中使用casper.evaluate。但我找不到任何说明在evaluate函数中使用XPath选择器的文档。是否可以这样做?如果是,那怎么办?

1 个答案:

答案 0 :(得分:1)

基本上所有浏览器都通过document.evaluate()支持XPath。 PhantomJS也是如此(XPath 1.0)。

CasperJS提供了一些便利功能来使用它。在页面上下文(casper.evaluate()内),有两个函数__utils__.getElementByXPath(expression [, scope])__utils__.getElementsByXPath(expression [, scope])

此示例打印它找到的具有<a>属性的第一个href元素的href:

casper.echo(casper.evaluate(function(){
    return __utils__.getElementByXPath("//a[@href]").href
}));

CasperJS还支持页面上下文之外的XPath表达式和辅助函数:

var x = require("casper").selectXPath;

使大多数 CasperJS函数能够使用XPath表达式而不是CSS选择器:

casper.echo(casper.getElementAttribute(x("//a[@href]"), "href"));

这与上面的例子类似,但不同,因为元素属性和属性之间存在差异。