我们可以在document.querySelector
函数中使用casper.evaluate
。但我找不到任何说明在evaluate函数中使用XPath选择器的文档。是否可以这样做?如果是,那怎么办?
答案 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"));
这与上面的例子类似,但不同,因为元素属性和属性之间存在差异。