2014-10-01 2 views
0

PhantomJS 또는 zombie.js와 같은 헤드리스 브라우저에서 웹 사이트를 테스트해야하는 Java로 응용 프로그램을 작성하고 싶습니다. PhantomJS 스크립트는 자바 스크립트로 작성되었으므로 GhostDriver에서 Selenium을 사용하지 않고 자바 애플리케이션에서 PhantomJS가 제공하는 JavaScript API를 어떻게 사용할 수 있습니까? 도서관 Nashorn과 관련이 있습니까? (.와 예 : java.net.HttpUrlConnection)
1. HTTP-요청 만들기 : 단계에Java 응용 프로그램에서 PhantomJS의 JavaScript API를 사용하는 방법

자세한 내용은 난을 통해 갈 필요하고 해당 가져 오기 웹 서버에
2. 보내 응답과 HTML 응답

합니까를 열 때 메시지 XXX와 경고가 나타나거나하지 않을 경우
4. 확인 HTML 파일
3. FAST의 헤드리스 브라우저에서 HTML 파일 (NO HtmlUnit과)에 소스를 저장 아무도 해결책을 안다?
추신 : GhostDriver가있는 PhantomJs가 경고 처리를 지원하는 것은 쉽지만 그렇지는 않습니다!

답변

-1

ScriptEngine을 사용하여 Java 내부 PhantomJS 스크립트를 평가할 수 있습니다. 자세한 내용은 here을 참조하십시오. 예 :

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); 
engine.eval(new FileReader("script.js")); 
+0

당신은 그렇게 할 수 없습니다. PhantomJS 스크립트는 독립적 인 것이 아니며 PhantomJS API에 의존합니다. 또 다른 제안이 있니? –

+2

PhantomJS [Inter Process Communication] (http://phantomjs.org/inter-process-communication.html) 또는 [phantomjs/javabindings] (https://github.com/KDAB/phantomjs/tree/javabindings)를 사용해 볼 수 있습니다./javabindings). – denim2x

+0

어떤 종류의 IPC가 가장 쉬운 해결책이며 유효한 답변입니다. 비록, javabindings 흥미로운 것 같습니다. 샘플 코드 (사용 방법)로 답을 작성할 수 있습니까? 작성하는 방법조차도? 이것을 기존 답변에 추가 할 수 있지만 별도의 답변을 게시 할 수도 있습니다. –

1

당신은 자바 응용 프로그램에서 헤드리스 브라우저에서 테스트 할 경우, 최소 저항의 경로 HtmlUnit와 함께, 셀레늄 자바 드라이버를 사용하는 것입니다.

Nashorn은 PhantomJS를 위해 JavaScript API를 제공하지 않습니다. 또한 "window"와 "document"와 같은 브라우저 객체를 제공하지도 않습니다. 제공하는 "호스트"(네이티브 Java) 객체를 사용하여 Java 프로그램 내에서 JavaScript를 실행하고 JavaScript 내에서 Java 객체를 생성 할 수 있으므로 Java에서 PhantomJS API를 다시 구현할 수 있습니다. 그러나 아마도 그것이 당신이 원하는 것이 아닙니다.

+0

현재 HtmlUnit (Selenium 제외)을 사용하고 있지만 속도가 만족스럽지 않습니다. 느린 자바 스크립트 렌더링 때문에 Firefox 브라우저만큼 느립니다. – juzwani

관련 문제