我想使用CasperJS在JQuery UI datepicker中单击每个启用日期,在单击时执行某些操作,然后返回并单击下一个日期。这里的问题是,一旦我显示了日期选择器,我就不知道如何在其体内及其体内获得锚点的选择器。
我不认为CasperJS会执行类似于jquery的任何操作,您可以将其传递给选择器并返回一系列元素。
我可以进入evaluate
调用并通过jquery获取数组,但是我必须将其作为有效的唯一选择器发送回来,以便CasperJS循环。
我可以使用jquery来获取每个锚的内容,例如" 1",然后使用CasperJS的clickLabel
,但只能通过标记clickLabel范围,所以我可以说是"点击其内容为' 1""的锚点,如果有多个内容包含内容,则可能会点击错误的内容" 1"在屏幕上。
答案 0 :(得分:1)
你不需要jQuery来做这件事。 XPath可以用来为datepicker天设计一个好的选择器函数,如下所示:
var x = require('casper').selectXPath;
function daySelector(day) {
return x("//*[contains(@class,'ui-datepicker')]//td[@data-handler='selectDay']/a[text()='"+day+"']");
}
由于你知道要点击的数字,你可以这样做(未经测试):
var numbers = [2,3,4,5,6,7],
pickerSelector = ".ui-datepicker";
casper.thenEach(numbers, function(num){
num = num.data;
// TODO: click into the date field
this.waitUntilVisible(pickerSelector);
this.thenClick(daySelector(num));
this.waitWhileVisible(pickerSelector);
// TODO: Check or do something you need
});