GhostDriver는 JavaScript로 작성되었으며 PhantomJS API을 사용하여 WebDriver 유선 프로토콜 명령을 기본 PhantomJS 명령/호출로 변환합니다.
PhantomJS에는 브라우저를 구동하는 외부 (팬텀) 컨텍스트와 페이지 JavaScript가 실행되는 내부 (페이지) 컨텍스트라는 두 가지 컨텍스트가 있습니다. PhantomJS에서 JavaScript를 비활성화하면 페이지 컨텍스트 만 비활성화됩니다. 여전히 몇 가지 작업을 수행 할 수 있지만 더 이상 page.evaluate*()
을 사용할 수 없습니다. 이는 페이지 컨텍스트에 대한 문입니다. PhantomJS API를 자세히 살펴보면 DOM에 액세스하는 데 사용할 수있는 함수가 없음을 알 수 있습니다. 즉, 요소를 찾을 수없고 요소의 텍스트를 쿼리 할 수 없으며 요소를 변경할 수 없으며 요소를 클릭 할 위치를 알 수 없습니다.
캡쳐 화면 (page.render()
)을 만들고 맹목적으로 클릭하고 입력 (page.sendEvent()
) 할 수 있습니다. 이것은 WebDriver 프로토콜이 작동하기에 충분하지 않습니다.