获取CasperJS中选择的元素的DOM属性

时间:2014-06-23 04:41:49

标签: casperjs

我正在使用CasperJS构建一个概念验证测试,并且当事情可用时以及它们不可用时我试图将其包围起来。

我对evaluate()为何需要以及为什么不能只获取页面并使用document.querySelectorAll()进入城镇感到有点模糊,但最终会给我一个长度为零的nodeList ...即使在casper.echo输出HTML并查看大量匹配的选择器之后。

现在,我正在尝试这个:

var tile;
var pid;        
casper.waitForSelector('.m-product-tile', function() {
    tile = this.evaluate(function() {
        return  __utils__.findOne('.m-product-tile');
    });
    pid = this.evaluate(function() 
        return __utils__.findOne('.m-product-tile').getAttribute('data-pid');
    });
    //do cools stuff like click() on tile and make sure the URL has the pid in it
});

但这感觉不对,因为我不确定__utils__.findOne()将始终返回相同的元素。

我很乐意能够做到这一点:

pid = tile.getAttribute('data-pid');

但是当我尝试这个时,我得到一个错误:

uncaughtError: TypeError: 'undefined' is not a function (evaluating 'tile.getAttribute('data-pid')')

tile以某种DOMNode方法不再是getAttributes吗?使用typeof tile,它仍然认为它是一个对象。我回应了DOMNode,它有一个getAttributes密钥。

第一个示例中的代码可以使用getAttribute ...那么为什么tile会变成不再有getAttributes方法的内容?

http://casperjs.readthedocs.org/en/latest/modules/casper.html#evaluate提供了一个非常好的答案......但是,我仍然想知道为什么,如果页面传回的是DOMNode,为什么我不能对待它像一个人?

0 个答案:

没有答案