我尝试使用CasperJS测试页面。是否有可能获得包含属性数据-...的每个元素(段落)? 之后,我需要将此属性与内部HTML进行比较,但我不知道该怎么做。
答案 0 :(得分:6)
首先,您需要检索您感兴趣的所有元素的表示。可以使用casper.getElementsInfo(selector)
完成此操作:
var elements = casper.getElementsInfo("p[data-whatever]");
这将为您提供页面上设置了<p>
属性的所有data-whatever
元素。如果您想根据data-whatever
属性的值对其进行过滤,则需要根据需要使用attribute selectors。
getElementsInfo()
函数包含非常有用的信息,但不包含您要使用的实际元素。它只包含一个表示形式。
您可以迭代这些元素表示并对它们运行操作。你说你想&#34;将这个属性与内部HTML&#34; 进行比较。这可以通过这种方式完成:
elements.forEach(function(element){
if (element.attributes["data-whatever"] === element.html) {
casper.echo("data attribute and content are exactly equal");
} else {
casper.echo("data attribute and content are different");
}
});
请记住,您可以使用普通的DOM函数直接对元素执行此操作,但是您必须在casper.evaluate()
内执行此操作,因为PhantomJS(CasperJS构建于其上)具有两个上下文,页面上下文是沙箱。此外,您无法从page context返回DOM节点。