2015-01-05 3 views
2

특정 페이지에서 PhantomJSDriver의 JavaScript를 비활성화하고 싶지만 this link here은 "전체 GhostDriver를 사용할 수 없게 될 것이므로"불가능하다고 말합니다.GhostDriver/PhantomJSDriver에서 JavaScript를 비활성화 할 수없는 이유는 무엇입니까?

누군가 5 년 된 것처럼 설명 할 수 있습니까? 왜 그렇습니까?

PhantomJSDriver가 페이지에서 JavaScript를 실행하지 못하게 할 수있는 옵션이 있습니까?

답변

3

GhostDriver는 JavaScript로 작성되었으며 PhantomJS API을 사용하여 WebDriver 유선 프로토콜 명령을 기본 PhantomJS 명령/호출로 변환합니다.

PhantomJS에는 브라우저를 구동하는 외부 (팬텀) 컨텍스트와 페이지 JavaScript가 실행되는 내부 (페이지) 컨텍스트라는 두 가지 컨텍스트가 있습니다. PhantomJS에서 JavaScript를 비활성화하면 페이지 컨텍스트 만 비활성화됩니다. 여전히 몇 가지 작업을 수행 할 수 있지만 더 이상 page.evaluate*()을 사용할 수 없습니다. 이는 페이지 컨텍스트에 대한 문입니다. PhantomJS API를 자세히 살펴보면 DOM에 액세스하는 데 사용할 수있는 함수가 없음을 알 수 있습니다. 즉, 요소를 찾을 수없고 요소의 텍스트를 쿼리 할 수 ​​없으며 요소를 변경할 수 없으며 요소를 클릭 할 위치를 알 수 없습니다.

캡쳐 화면 (page.render())을 만들고 맹목적으로 클릭하고 입력 (page.sendEvent()) 할 수 있습니다. 이것은 WebDriver 프로토콜이 작동하기에 충분하지 않습니다.