【问题标题】:Iterating a JQuery UI Datepicker via CasperJS通过 CasperJS 迭代一个 JQuery UI Datepicker
【发布时间】:2014-05-02 07:34:25
【问题描述】:

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

我不认为 CasperJS 做任何类似于 jquery 的事情,您可以将选择器传递给它并返回一个元素数组。

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

我可以使用 jquery 来获取每个锚点的内容,例如“1”,然后使用 CasperJS 的clickLabel,但 clickLabel 仅按标签作用域,所以我只能说“单击内容为 '1 的锚点'”,然后如果屏幕上有多个内容为“1”的锚点,则可能会点击错误的内容。

【问题讨论】:

    标签: casperjs


    【解决方案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
    });
    

    【讨论】:

      猜你喜欢
      • 2012-06-23
      • 2015-02-18
      • 2010-11-15
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多