[英]Clicking a different button inside each loop iteration
我在单击每个循环(在CasperJS中)中的项目时遇到了麻烦,这只是代码的一小部分:
$("#id1",html).each(function( index ) {/*loop-start*/
var job = {};/*init*/
casperjs.click(".class2");
boo.waitForSelector('selector3', function() {
job.url = casperjs.getCurrentUrl();
page.pagejobs.push(job);
casperjs.back();
casperjs.waitForSelector('selector4', function() {
},function(){
}, 6000);
},function(){
}, 10000);
});/*loop-end*/
基本上,我单击的是按钮( casper.click(".class2")
),在这里没问题。 第一次运行良好,是因为它单击了选择器(.class2)的第一个按钮,但问题是有很多选择器与同一类的选择器不同(它们是(#id1)的子代)。
所以它像:
<div id="id1">
<div class="anything">
<a button class="class2"> </a>
</div>
<div class="anything">
<a button class="class2"> </a>
</div>
</div>
所以这个casper.click(".class2")
是我的问题。 我需要一种在each
函数的每次迭代中选择当前按钮的方法。 请注意,我不能使用$(this)
。
CSS选择器提供了:nth-child()
伪类,可用于根据索引选择子元素。 当只有.anything
元素是#selector1goeshere
子元素时,此方法可以按预期工作。
您可以使用
casper.click("#id1 > :nth-child("+(index+1)+") > a.class2");
您还可以使用XPath表达式执行此操作,而没有只.anything
子项的限制。 例如这样:
var x = require("casper").selectXPath;
...
casper.click(x("//*[@id='id1']/*[contains(@class,'anything')]["+(index+1)+"]/a[contains(@class,'class2')]"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.