1

나는 PhantomJS를 통해 Python을 통해 Selenium + Ghostdriver를 사용하고 있습니다.헤드리스 브라우저 (PhantomJS)에서 비동기식으로 페이지 열기

동시에 여러 페이지를로드하려고하고 있는데 이렇게하려면 페이지를로드하는 비동기 메서드를 찾고 있습니다.

내 연구에서 PhantomJS는 이미 별도의 스레드에 있으며 여러 탭을 지원하므로 퍼즐이 누락 된 부분은 비 차단 방식으로 페이지를로드하는 방법이라고 생각합니다.

Ghostdriver를 우회하고 PhantomJS 또는 다른 헤드리스 브라우저와 직접 인터페이싱하는 간단한 Ghostdriver 방법이라면 어떤 솔루션이라도 환영 할 수 있습니다.

도움 및 의견을 보내 주셔서 감사합니다. Yuval 교수

답변

2

당신이 ghostdriver 무시하려면

는, 당신은 직접 자바 스크립트 또는 커피 스크립트에 PhantomJS 스크립트를 작성할 수 있습니다. 내가 아는 한, 원하는 언어 (파이썬)의 다른 스레드를 사용하는 경우를 제외하고는 셀렌 웹 드라이버를 사용하여이 작업을 수행 할 수있는 방법이 없습니다.

만족스럽지 않으면 CasperJS가 있습니다.이 캐스퍼는 셀레늄보다 스크립트를 작성할 때 자유 롭지 만 PhantomJS 또는 SlimerJS 만 사용할 수 있습니다.

+0

빠른 답장을 보내 주셔서 감사합니다. CasperJS를 살펴 보겠습니다. 내가 가진 또 하나의 아이디어는 WebDriver의 execute_script_async를 사용하여 많은 "window.location"명령을 제공하는 것입니다. 그게 효과가있을 것인가? –

+0

아니요, 동일한 페이지/탭에서 실행되므로 서로 덮어 쓰게됩니다. –

0

나는 특히 셀레늄/Ghostdriver을 통해이 작업을 수행하는 방법에 대한 완전히 확실하지 않다,하지만 당신 (또는 미래의 독자가) 직접 팬텀 스크립트를 접촉 할 수있는 경우, 다음 솔루션으로 간단하다 :

page.open(newUrl, ...); 

"page.open()"메서드는 기본적으로 비동기이며 필요에 따라 사용해야합니다. -이 질문을 한 지 꽤 오랜 시간이 지났으니 도움이 더 필요할지 모르겠습니다. 그러나, 나중에 이것을 읽을 수있는 사람들을 위해서 나는 이것이 도움이되기를 희망합니다!