获取CasperJS中选定元素的DOM属性
我正在用CasperJS构建一个概念验证测试,我试图在有东西可用和没有东西可用的时候绞尽脑汁 我有点不明白为什么需要获取CasperJS中选定元素的DOM属性,casperjs,Casperjs,我正在用CasperJS构建一个概念验证测试,我试图在有东西可用和没有东西可用的时候绞尽脑汁 我有点不明白为什么需要evaluate(),为什么一个人不能仅仅获得一个页面,然后带着document.queryselectoral()进城,但这最终给了我一个长度为零的节点列表。。。即使在casper.echo输出HTML并看到大量匹配的选择器之后 现在,我正在尝试: var瓦; var-pid; casper.waitForSelector('.m-product-tile',function()
evaluate()
,为什么一个人不能仅仅获得一个页面,然后带着document.queryselectoral()
进城,但这最终给了我一个长度为零的节点列表。。。即使在casper.echo
输出HTML并看到大量匹配的选择器之后
现在,我正在尝试:
var瓦;
var-pid;
casper.waitForSelector('.m-product-tile',function(){
tile=this.evaluate(函数(){
返回uuu utils_uuu.findOne('.m-product-tile');
});
pid=this.evaluate(函数()
返回uuu utils_uuu.findOne('.m-product-tile').getAttribute('data-pid');
});
//在平铺上单击()之类的东西,并确保URL中包含pid
});
但这感觉是错误的,因为我不确定\uuuutils\uuuu.findOne()
是否总是返回相同的元素
我希望能够做到这一点:
pid=tile.getAttribute('data-pid');
但当我尝试这样做时,我得到了一个错误:
uncaughtError: TypeError: 'undefined' is not a function (evaluating 'tile.getAttribute('data-pid')')
tile
是否以某种方式不再是具有getAttributes
方法的DOMNode
?使用typeof tile
,它仍然认为它是一个对象。我回显了DOMNode,它有一个getAttributes
键
第一个示例中的代码与getAttribute
一起工作。。。那么为什么tile
会变形为不再有getAttributes
方法的东西呢
提供了一个很好的答案。。。但是,我仍然想知道,如果页面返回的内容是一个
DOMNode
,为什么我不能将其视为一个?这样一个存在的问题。这就是phantomjs及其评估
函数的工作方式。无法传递非原语:函数将被剥离,因为它们是使用new
创建的对象。为什么不直接使用pid=this.getElementAttribute('.m-product-tile','data-pid')代码>?我在该类中有几个元素,我需要确保我引用的是findOne()方法返回的同一个元素。我现在所拥有的确实有效,但是两次查询远程DOM并希望它返回相同的元素感觉是错误的。我将继续我现在的做法。你可以回答你自己的问题。