有没有办法选择包含指定文本的标记,例如:contains
选择器在CasperJS中使用jQuery?
答案 0 :(得分:0)
您可以使用(clientScripts
或remoteScripts
)将jQuery注入页面,并根据页面上下文中的内容选择元素(在casper.evaluate()
内):
var casper = require('casper').create({
remoteScripts: [
'http://code.jquery.com/jquery-1.11.2.min.js'
]
});
casper.start(url, function(){
var text = this.evaluate(function(){
return $("div:contains('asdf')").text();
});
this.echo(text);
}).run();
请注意,DOM元素无法从页面上下文传递到外部。您需要构建元素的一些表示。
另一种可能性是使用CasperJS的XPath实用程序来选择基于文本的元素:
var casper = require('casper').create(),
x = require('casper').selectXPath;
casper.start(url, function(){
this.echo(this.fetchText(x("//div[contains(text(),'asdf')]")));
}).run();
XPath text()
函数与jQuery的:contains()
不同,因为它只查看当前节点的文本内容(单个文本节点)并查看其后代。这可以改进,但通过观察后代仍然不是完全相同的事情:
x("//div[.//*[contains(text(),'asdf')]]")