这是我用代码来处理元素中的href值:
var info = this.getElementsInfo(selector); // an array of object literals
for (var i = firstp; i < info.length; i=i+interval) {
if(i==0)
this.echo('"'+info[i].getAttribute('href')+'"');
else
this.echo(',"'+info[i].getAttribute('href')+'"');
}
答案 0 :(得分:2)
我在documentation找到了一些东西,我可以用这样的代码来解决我的问题:
var info = this.getElementsInfo(selector); // an array of object literals
for (var i = firstp; i < info.length; i=i+interval) {
if(i==0)
this.echo('"'+info[i].attributes.href+'"');
else
this.echo(',"'+info[i].attributes.href+'"');
}
现在有效。
之前使用getAttribute
之前没有工作的原因是casper.getElementsInfo()
返回DOM节点的普通对象表示,而不是实际的DOM节点。由于CasperJS(和PhantomJS)有两个上下文,DOM节点不能传递出页面上下文(在casper.evaluate()
内)。
答案 1 :(得分:1)
请按照以下步骤操作:
首先获取路径
some variable = 'table#dgResults > tbody > tr:nth-child(1) > td > b a';
它(这只是对“某些变量”的解释):
table[id="dgResults"] -> (couldn't add to the stupid gray box)
tbody
tr-> lst column
b
a -> all href tags are here
接下来使用getElementsAttribute
var nextStep = this.getElementsAttribute(elem, 'href');
然后转储它:
utils.dump(nextStep);
转储时应该会看到所有链接。请记住,this.getElementAttribute()
在标记之间返回1个值,this.getElementsAttribute()
返回标记之间的所有值。