2014-04-24 3 views
1

테스트 캐스퍼와 모달 대화 :CasperJS를 사용하여 이스케이프 키를 눌러 (모달을 닫기 위해) 어떻게해야합니까?

.then(function() { 
    this.click(variables.configButton); 
}).then(function() { 
    this.capture('./test/screencaps/edit-afterClickFlyout1.png'); 
    test.assertVisible('#addDataDialog'); 
}).then(function() { 
    // send ESC key, how? 
}).then(function() { 
    this.capture('./test/screencaps/edit-afterClickFlyout2.png'); 
    test.assertNotVisible('#addDataDialog'); 
}).run(function() { 
    test.done(); 
}); 

이 너무 그것을 닫습니다 ESC를 누르면 각도 모달입니다. 캐스퍼는이 sendKeys 있지만 :

에서 SendKeys에서 키보드 이벤트 를받을 수 있습니다 현재 지원되는 HTMLElements이, 그리고 어떤는 HTMLElement는 =의 contentEditable 특성을 "true".

페이지에 텍스트 입력이없는 경우 문제가 있습니다. 하나를 추가하거나 다른 컨트롤에서 contenteditable을 설정할 수는 있지만 테스트 통과를 위해 페이지를 수정하고 있음을 의미합니다. 이는 좋지 않습니다.

는 (필자는 취소 링크에게 ID를 부여하고 그것을 this.click를 사용하여 문제를 해결,하지만 난 정말 테스트 통과를 만들기 위해 내 마크 업을 수정할 필요가 없습니다) 난 그냥 단순한를 보낼 수있는 방법

을 캐스퍼와의 키스?

답변

2

이동 방법은 phantomjs 특수 키를 보냅니다. 여기

casper.then(function() {  
    test.comment('Send Esc key'); 
    this.sendKeys('#contact-us-modal', casper.page.event.key.Escape); 
}); 

여기

sendKeys 문서 링크가 casper.page.event.key

에서 사용할 수있는 특수 키의 list입니다.

+0

이 질문은 (내가 거의 2 년, 죄송합니다)이 답변을 확인하기에는 너무 오래되었지만 jquery를 사용하는 것보다 더 좋은 대답 인 것 같습니다. – jcollum

1

페이지에 jQuery가있는 경우이 코드를 사용하여 키를 트리거 할 수 있지만 보안 고려 사항으로 인해 작동하지 않을 수 있습니다. 이 post을 참조하십시오.

casper.thenEvaluate(function(){ 
    var esc = $.Event("keydown", { keyCode: 27 }); 
    $("body").trigger(esc);​ 
}); 

비 jQuery 버전도 있습니다.