单击CasperJS没有响应

时间:2014-11-30 19:03:28

标签: javascript casperjs

我使用casperjs来抓取内容。首先,我想点击一些datepicker input#ControlGroupCompactView_AvailabilitySearchInputCompactViewdate_picker_display_id_1

所以当我点击它时,应该显示日期选择器弹出窗口,但它没有。

我的代码就是这个

casper.evaluate(function(){
    $("#ControlGroupCompactView_AvailabilitySearchInputCompactViewdate_picker_display_id_1").click();
});

但失败了...... 我尝试了更像这样的东西......

var selector = "input#ControlGroupCompactView_AvailabilitySearchInputCompactViewdate_picker_display_id_1";
casper.waitForSelector(selector);
casper.thenEvaluate(function(){
    document.querySelector(selector).click();
});

但也失败了...... 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

CasperJS具有click功能,其功能几乎总是优于element.click()$element.click()

var selector = "input#ControlGroupCompactView_AvailabilitySearchInputCompactViewdate_picker_display_id_1";
casper.waitUntilVisible(selector)
    .thenClick(selector)
    .wait(100) // little time for the picker to open: adjust to your needs
    .then(function(){
        this.capture("screenshot.png"); // make sure the picker is there
    });

您还可以使用casper.waitUntilVisible等待日期选择器打开,而不是casper.wait(100)

如果这不能解决您的问题,您必须通过注册resource.errorcasper.page.onResourceTimeoutremote.messagepage.error事件进一步调查。也许有错误。


顺便说一下,您的第二个代码段无法正常工作,因为selectorcasper.evaluate内未定义。 casper.evaluate是沙盒页面上下文。你必须明确地传入和传出变量,它们可能很复杂。