웹 사이트에서 로그인 버튼을 테스트하기위한 매우 간단한 CasperJS 스크립트를 작성하려고합니다. 클릭 이벤트 후 웹 사이트 상단에 모달 창이 열리고 로그인 필드를 채울 수 있습니다.CasperJS 클릭이 모달 창을 표시하지 못합니다.
이 웹 사이트를 사용하면 매우 효과적입니다. casperjs test my-script-file --engine=slimerjs
을 사용하면 완벽하게 정상적으로 작동합니다. slimerjs가 없으면 코드가 실패합니다.
은 버튼을 정의하는 방법 :
<button class="btn btn-strong-submit" data-action="join">Join</button>
내 시험
: 웹 사이트가 작동하는 방식이이기 때문에
웹 사이트에casper.test.begin('testing', 3, function suite(test)
{
casper.start();
casper.thenOpen("http://the-website-to-test-url", function()
{
casper.wait(5000, function(){
casper.thenClick("button.btn.btn-strong-submit");
});
});
casper.then(function() {
casper.wait(3000);
casper.capture("screen.png");
});
casper.then(function(){
casper.assertVisible("div.join_container");
});
casper.run(function()
{
test.done();
})
});
이 버튼을 클릭하면 http://the-website-to-test-url.com/#join로 이동합니다은 클릭을 기다립니다 catch는 jQuery를 사용하여 [data-action], forms # [data-action]을 찾은 다음 그런 식으로 URL을 작성합니다.
하지만 CasperJS는 jQuery에서 배경으로 잡히는 클릭을 이해하지 못하는 것 같습니다. 어떤 아이디어? 터미널 출력에
업데이트 : Artjom의 코멘트에 확장
[info] [phantom] Starting...
[info] [phantom] Running suite: 4 steps
[debug] [phantom] opening url: http://www.MYURL.com/, HTTP GET
[debug] [phantom] Navigation requested: url=http://www.MYURL.com/, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "http://www.MYURL.com/"
[debug] [phantom] Successfully injected Casper client-side utilities
[info] [phantom] Step anonymous 2/4 http://www.MYURL.com/ (HTTP 200)
[info] [phantom] Step anonymous 2/4: done in 721ms.
[info] [phantom] Step anonymous 3/4 http://www.MYURL.com/ (HTTP 200)
[info] [phantom] Step anonymous 3/4: done in 731ms.
[info] [phantom] Step _step 4/5 http://www.MYURL.com/ (HTTP 200)
[info] [phantom] Step _step 4/5: done in 752ms.
[info] [phantom] wait() finished waiting for 5000ms.
[debug] [phantom] Mouse event 'mousedown' on selector: .btn.btn-strong-submit
[debug] [phantom] Mouse event 'mouseup' on selector: .btn.btn-strong-submit
[debug] [phantom] Mouse event 'click' on selector: .btn.btn-strong-submit
[info] [phantom] Step anonymous 5/5 http://www.MYURL.com/ (HTTP 200)
//After click URL should have changed to http://www.MYURL.com/#login
[info] [phantom] Step anonymous 5/5: done in 5772ms.
[info] [phantom] Step _step 6/6 http://www.MYURL/ (HTTP 200)
[info] [phantom] Step _step 6/6: done in 5792ms.
[info] [phantom] wait() finished waiting for 3000ms.
[debug] [phantom] Capturing page to /home/TEMP/screen.png
[info] [phantom] Capture saved to /home/TEMP/screen.png
[info] [phantom] Done 6 steps in 9367ms
따라서 스크립트는 SlimerJS에서 작동하지만 PhantomJS에서는 작동하지 않습니까? 그게 무슨 뜻 이니? 어떻게 작동하지 않는지 어떻게 확인합니까? –
잘 slimerjs와 나는 그것을 볼 수 있지만 casperjs/phantomjs assertVisible 함께 실패합니다. 죄송합니다. 너무 많은 시련 끝에 코드에서 제거했습니다. 다시 코드를 삽입하는 것을 잊었습니다. – teodr
그리고 나는 5000을 기다린 후에도 스크린 샷을 캡처하려고 시도했지만 아무 것도 볼 수 없습니다. – teodr