我使用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();
});
但也失败了...... 有什么建议吗?
答案 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.error
,casper.page.onResourceTimeout
,remote.message
和page.error
事件进一步调查。也许有错误。
顺便说一下,您的第二个代码段无法正常工作,因为selector
在casper.evaluate
内未定义。 casper.evaluate
是沙盒页面上下文。你必须明确地传入和传出变量,它们可能很复杂。