在每次循环迭代中单击不同的按钮
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')]"));
相关文章:
- 如何隐藏按钮单击事件上的占位符
- 从Web服务器下载图像按钮单击使用JavaScript
- 在SweetAlert中传递ASP.NET按钮单击事件
- 单选按钮单击可刷新/更改网站的小区域
- 调用按钮单击事件 ajax 加载的用户控件
- 附加 jQuery 代码以在加载和按钮单击时运行
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 按钮单击服务器单击
- 触发单选按钮单击,并在页面刷新时记住选择
- 如何使用 javascript 而不是使用控制器中的方法在 rails 中呈现部分按钮单击
- jQuery UI 选项卡 - 将参数设置为下一个/上一个按钮单击
- 如何在 Angular JS 中的按钮单击上添加类
- 当元素上有多个类时触发按钮单击事件
- 如何在 HTML 中的按钮单击上更改图像(IMG URL 每次来自服务器)
- 如何使用javascript刷新我的html页面时清除按钮单击
- 阻止后退按钮 - 单击按钮时忽略
- 如何制作按钮.单击“开始时不运行”
- Rails:尝试在按钮单击时渲染部分
- 在页面加载时调用函数,在按钮单击时再次调用函数,但参数不同
- 如何在服务器端的文本中添加按钮单击事件