Javascript 获取CasperJS中具有特定(数据-)属性的每个元素

Javascript 获取CasperJS中具有特定(数据-)属性的每个元素,javascript,html,casperjs,custom-data-attribute,Javascript,Html,Casperjs,Custom Data Attribute,我正在尝试使用CasperJS测试一个页面。是否有可能获取包含属性数据的每个元素(段落)-。。。? 之后,我需要将此属性与内部HTML进行比较,但我不知道如何进行比较。首先需要检索所有感兴趣元素的表示形式。这可以通过以下方式实现: 这将为您提供页面上具有数据属性集的所有元素。如果您想通过数据属性的值对其进行过滤,则需要根据需要使用 getElementsInfo()函数包含非常有用的信息,但不包含要使用的实际元素。它只包含作为数组的表示形式 您可以迭代这些元素表示并对其运行操作。您说过要“将此属

我正在尝试使用CasperJS测试一个页面。是否有可能获取包含属性数据的每个元素(段落)-。。。?
之后,我需要将此属性与内部HTML进行比较,但我不知道如何进行比较。

首先需要检索所有感兴趣元素的表示形式。这可以通过以下方式实现:

这将为您提供页面上具有
数据属性集的所有
元素。如果您想通过
数据属性的值对其进行过滤,则需要根据需要使用

getElementsInfo()
函数包含非常有用的信息,但不包含要使用的实际元素。它只包含作为数组的表示形式

您可以迭代这些元素表示并对其运行操作。您说过要“将此属性与内部HTML进行比较”。这可以通过以下方式完成:

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函数在元素上执行此操作,但是您必须在中执行此操作,因为PhantomJS(CasperJS构建在其上)有两个上下文,并且页面上下文是沙盒的。此外,不能从返回DOM节点

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");
    }
});