在每个循环迭代中单击不同的按钮
Clicking a different button inside each loop iteration
我在点击 each 循环(在 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")
) 没问题。第一次它工作正常,因为它点击了第一个带有 selector (.class2) 的按钮,但问题是有很多 selectors 具有相同的 class 比那个(它们是 (#id1) 的 children)。
所以它是这样的:
<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
函数的每次迭代中 select 当前按钮的方法。请注意,我不能使用 $(this)
。
CSS select 或提供 :nth-child()
伪 class,您可以将其用于 select 基于索引的子元素。当只有 .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')]"));
我在点击 each 循环(在 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")
) 没问题。第一次它工作正常,因为它点击了第一个带有 selector (.class2) 的按钮,但问题是有很多 selectors 具有相同的 class 比那个(它们是 (#id1) 的 children)。
所以它是这样的:
<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
函数的每次迭代中 select 当前按钮的方法。请注意,我不能使用 $(this)
。
CSS select 或提供 :nth-child()
伪 class,您可以将其用于 select 基于索引的子元素。当只有 .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')]"));