code

GUI없이 셀레늄 (Firefox) 웹 드라이버를 실행할 수 있습니까?

codestyles 2020. 8. 15. 09:15
반응형

GUI없이 셀레늄 (Firefox) 웹 드라이버를 실행할 수 있습니까?


프로덕션 서버를 Ubuntu 데스크탑 10.04에서 Ubuntu 서버 12.04로 업그레이드하는 것을 고려하고 있습니다.

Selenium Web Driver와 같은 현재 데스크톱 OS에서 실행되는 다양한 서비스가 있습니다. 내 질문은 Selenium Web Driver를 CLI 기반 시스템에서 실행할 수 있습니까?

내 즉각적인 생각은 Firefox에 의존하기 때문에 할 수 없다는 것입니다. 그러나 누군가가 나를 틀렸다는 것을 증명하고 싶습니다!


당신이 찾고있는 것은 입니다.

예, Firefox에서 헤드리스로 Selenium을 실행할 수 있습니다. 팔로우 할 수 있는 게시물 이 있습니다.

다음은 Xvfb를 설정하는 요약 단계입니다.

#install Xvfb
sudo apt-get install xvfb

#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99    

#you are now having an X display by Xvfb

브라우저 창을 쉽게 숨길 수있었습니다.

그냥 PhantomJS를 설치합니다 . 그런 다음 다음 줄을 변경하십시오.

driver = webdriver.Firefox()

에:

driver = webdriver.PhantomJS()

나머지 코드는 변경할 필요가 없으며 브라우저가 열리지 않습니다. 디버깅 목적으로 driver.save_screenshot('screen.png')코드의 다른 단계에서 사용 하거나 개발 중에 Firefox 웹 드라이버를 계속 사용하십시오.


헤드리스 브라우저 지원을 원하는 경우 채택 할 수있는 또 다른 접근 방식이 있습니다.

https://github.com/detro/ghostdriver

Selenium Conference에서 발표되었으며 아직 개발 중입니다. PhantomJS를 브라우저로 사용하고 HTMLUnitDriver보다 훨씬 낫습니다. 아직 스크린 샷은 없지만 아직 개발 중입니다.


예. HTMLUnitDriver대신 FirefoxDriverwebdriver를 시작하는 동안 사용할 수 있습니다 . 이것은 헤드리스 브라우저 설정입니다. 자세한 내용은 여기에서 확인할 수 있습니다 .


선택 사항은 다음 pyvirtualdisplay과 같이 사용하는 것입니다.

from pyvirtualdisplay import Display

display = Display(visible=0, size=[800, 600])
display.start()

#do selenium job here

display.close()

더 짧은 버전은 다음과 같습니다.

with Display() as display:
    # selenium job here

이것은 일반적으로 파이썬 캡슐화이며 xvfb어떻게 든 더 편리합니다.

그건 그렇고, PhantomJS헤드리스 브라우저 이지만 사용하면 창이 열리지 PhantomJS않지만 여전히 작동하려면 GUI 환경이 필요 합니다.

헤드리스 모드 (퍼티 연결 콘솔) PhantomJS()대신 사용할 때 오류 코드 -6이 발생했습니다 Firefox(). 그러나 데스크탑 환경에서는 모든 것이 정상입니다.


업데이트 : 더 이상 헤드리스 Firefox를 실행하기 위해 XVFB가 필요하지 않습니다. Linux의 Firefox v55 + 및 Windows / Mac의 Firefox v56 +는 이제 헤드리스 실행을 지원합니다.

여기에 몇 가지 사용 방법 문서를 추가했습니다.

https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java


또 다른 옵션은 이제 WebDriver에서 공식적으로 지원하는 GhostDriver입니다 . Ghostdriver 실제 성능 향상


HtmlUnitDriver 웹 클라이언트는 단일 스레드이며 Ghostdriver는 WebDriver 기능의 40 %에 불과합니다.

그럼에도 불구하고 Ghostdriver는 테스트를 위해 제대로 실행되며 WebDriver 허브에 연결하는 데 문제가 있습니다.


예, 브라우저없이 테스트 스크립트를 실행할 수 있지만 헤드리스 모드에서 실행해야합니다.

참고 URL : https://stackoverflow.com/questions/10399557/is-it-possible-to-run-selenium-firefox-web-driver-without-a-gui

반응형