通过CasperJS迭代JQuery UI Datepicker

时间:2014-05-01 18:10:55

标签: casperjs

我想使用CasperJS在JQuery UI datepicker中单击每个启用日期,在单击时执行某些操作,然后返回并单击下一个日期。这里的问题是,一旦我显示了日期选择器,我就不知道如何在其体内及其体内获得锚点的选择器。

我不认为CasperJS会执行类似于jquery的任何操作,您可以将其传递给选择器并返回一系列元素。

我可以进入evaluate调用并通过jquery获取数组,但是我必须将其作为有效的唯一选择器发送回来,以便CasperJS循环。

我可以使用jquery来获取每个锚的内容,例如" 1",然后使用CasperJS的clickLabel,但只能通过标记clickLabel范围,所以我可以说是"点击其内容为' 1""的锚点,如果有多个内容包含内容,则可能会点击错误的内容" 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
});