2014-11-30 2 views
0

콘텐츠 긁기에 casperjs를 사용하고 있습니다. 먼저 날짜 표시기를 클릭하고 싶습니다. input#ControlGroupCompactView_AvailabilitySearchInputCompactViewdate_picker_display_id_1CasperJS가 응답하지 않음

그래서 내가 클릭했을 때, datepicker 팝업이 나타나야하지만 그렇지 않습니다.

내 코드는이

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

CasperJS는 element.click() 또는 $element.click()이라는 거의 항상 더 잘 작동하는 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.wait(100)의 열을 기다리는 casper.waitUntilVisible를 사용할 수 있습니다. 이 문제가 해결되지 않는 경우

, 당신은 resource.error, casper.page.onResourceTimeout, remote.messagepage.error 이벤트에 등록하여 추가 조사를해야합니다. 어쩌면 오류가있을 수 있습니다. selectorcasper.evaluate 내부에 정의되지 않기 때문에 그런데


는 두 번째 조각은 작동하지 않을 수 있습니다. casper.evaluate은 샌드 박스 처리 된 페이지 컨텍스트입니다. 변수를 명시 적으로 전달해야하며 복잡 할 수 없습니다.