Selenium RC에서 브라우저를 숨길 수 있습니까?


92

일부 브라우저 작업을 자동화하기 위해 Selenium RC를 사용하고 있지만 브라우저가 보이지 않게하고 싶습니다. 이게 가능해? 어떻게? 셀레늄 그리드는 어떻습니까? Selenium RC 창도 숨길 수 있습니까?


허용되지 않을 수도 있지만, 창을 (-10000, -10000)에 배치하는 것처럼 브라우저를 화면 밖으로 이동 (일반 Windows UI 자동화 사용?)하면 안됩니까?
BrainSlugs83 2014 년

2
이 질문은 이제 오래되었으므로이 페이지 하단에 있는 적절한 최신 답변으로 리디렉션하겠습니다 .
Stéphane Bruckert 2014 년

답변:


87

몇 가지 옵션이 있습니다.

  • 브라우저를 보려면 VNC 또는 원격 데스크톱 연결을 통해 연결할 수있는 완전히 다른 컴퓨터 (또는 가상 컴퓨터)에서 브라우저가 열리도록 Selenium Grid를 사용할 수 있습니다. 또한 다른 옵션 : 해당 원격 서버에서 Jenkins 포 그라운드 프로세스를 실행하면 데스크톱에서 테스트 프로젝트를 실행할 수 있습니다.

  • XVFB의 Linux에서 Selenium 'headless'를 실행할 수 있습니다. 나는 이것을 시도한 적이 없으며 노력할만한 가치가 있는지 의심합니다. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

  • Windows 서비스에서 Selenium RC를 래핑 할 수 있습니다. http://support.microsoft.com/kb/137890 . 이후 버전의 Windows에 대한 권한 제약으로 인해 Selenium이 Windows 2000과 같은 데스크톱에 액세스하지 못하도록 할 수 있다는 점을 제외하고는 가능합니다.

  • 또 다른 옵션은 '실제'브라우저를 실행하지 않는 WebDriver HTMLUnitDriver와 같은 것을 사용하는 것입니다. http://code.google.com/p/webdriver/ . 또한 PhantomJS 옵션과 사용할 수있는 'headless Chrome'이 있습니다.

  • 물론 클라우드에서 테스트를 실행할 수있는 SauceLabs와 같은 서비스를 사용하는 옵션도 있습니다. 테스트가 완료되면 실행중인 비디오를 볼 수 있습니다.


다음은 서비스 설치 박쥐 파일을 만드는 방법에 있습니다 brantleytec.blogspot.com/2012/11/...
브랜 틀리 블랜차드을

58

Linux에서는 헤드리스 (가상) 디스플레이에서 WebDriver를 실행하여 브라우저를 숨길 수 있습니다. 이것은 Xvfb (X 가상 프레임 버퍼)로 수행 할 수 있습니다.

https://github.com/cgoldberg/xvfbwrapper를 사용하여 Python 코드에서 직접 Xvfb를 제어 할 수 있습니다 xvfbwrapper.

헤드리스 실행을위한 Python 코드는 다음과 같습니다.

from selenium import webdriver
from xvfbwrapper import Xvfb

display = Xvfb()
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')

print(driver.title)
driver.quit()

display.stop()

Debian / Ubuntu에 종속 항목을 설치합니다.

$ sudo apt-get install xvfb
$ pip install xvfbwrapper

코드가 가상 브라우저에서 실행되면 브라우저 상호 작용 스크립트가 실행되는 동안 PC를 계속 정상적으로 사용할 수 있습니까?
Mugen

자원이 소모되고 기계가 느려집니다!
Tim Long

22

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

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

driver = webdriver.Firefox()

에:

driver = webdriver.PhantomJS()

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


5
이 작업을 수행하려면 PhantomJs.exe의 경로를 입력해야합니다. 예driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
K DawG 2014-06-14

1
예,하지만 Windows에서만 가능합니다.
Stéphane Bruckert 2014-06-14

1
환경의 $ PATH 환경 변수에서 찾을 수있는 한 바이너리의 위치를 ​​지정할 필요가 없습니다.
Corey Goldberg

13

Windows 서비스로 Selenium RC의 경우 +1.

테스트를 완전히 숨겨서 실행하려면 Windows에있는 경우 솔루션이 많지 않다고 생각합니다.

LAN에있는 컴퓨터를 항상 온라인 상태로 유지하고 셀레늄 RC 서버를 실행하기 위해 내가하고자하는 일. 따라서 테스트를 실행하기 위해 localhost 대신 해당 컴퓨터의 IP를 사용합니다. 예를 들면 :

browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(서버를 실행하는 컴퓨터의 IP라고 생각하면).

설정을 마치면 컴퓨터에서 테스트를 실행하고 브라우저와 RC 서버 창은 다른 컴퓨터에 있으며 완료되면 다시 자신의 컴퓨터로 돌아갑니다.


12

Linux에서는 가상 디스플레이에서 테스트 브라우저를 실행할 수 있습니다. xvfb가상 X 서버를 만들기위한 패키지 가 필요 합니다. Debian 기반 배포판에서는 다음을 실행하십시오.

sudo apt-get install xvfb

ephemeral-x.sh가상 디스플레이에서 실행할 명령을 편리하게 설정 하는 멋진 도구 가 있습니다. 다운로드하여 실행 가능하게 만드십시오.

wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh

그런 다음이를 사용하여 Selenium 서버를 시작할 수 있습니다.

./ephemeral-x.sh java -jar selenium-standalone.jar

Selenium에서 만든 모든 브라우저 창은 이제 가상 디스플레이를 사용하며 사용자에게 표시되지 않습니다.


이 스크립트에는 인용 문제가 있습니다. 내가 ./ephemeral-x.sh foo '*'라고 말하면 "실행 중 : foo"다음에 내 디렉토리의 내용이 표시됩니다.
Nick Retallack

4

Windows를 사용하는 경우 한 가지 옵션은 다른 사용자 계정으로 테스트실행하는 것 입니다. 이것은 브라우저와 Java 서버가 귀하의 계정에 표시되지 않음을 의미합니다.


3

이것이 Linux 데스크톱 (Ubuntu)에서 maven으로 테스트를 실행하는 방법입니다. 나는 항상 초점을 맞추고있는 firefox 웹 드라이버로 작업 할 수 없다는 것에 지쳤습니다.

xvfb를 설치했습니다.

xvfb-run -a mvn 새로 설치

그게 다야


이것은 xvfb가 Selenium / WebDriver에서 실행되고 사용되는지 확인하는 가장 쉬운 방법입니다.
Samuli Pahaoja 2014

1

많은 경우 PhantomJS가 귀하의 요구에 완전히 맞지 않을 것입니다. Dave Hunt의 답변에 언급 된 헤드리스 크롬 옵션에 대해 자세히 설명하고 싶습니다.

크롬 57이이 기능을 출시했습니다. ChromeDriver를 통해 --headless 플래그를 전달하여 사용할 수 있습니다. 자세한 내용은 이 질문 의 토론을 참조 하세요.


0

GhostDriver라는 PhantomJS 관련 프로젝트가 있는데 , 이는 webdriver 유선 JSON 프로토콜을 사용하여 Selenium Grid에서 PhantomJS 인스턴스를 실행하기위한 것입니다. 이 질문은 현재 4 년이 지났지 만 아마도 당신이 찾고있는 것일 것입니다.


0

MacOSX에서는 브라우저 창을 숨길 수 없었지만 적어도 작업 흐름을 크게 방해하지 않도록 다른 디스플레이로 이동하는 방법을 알아 냈습니다. Firefox가 테스트를 실행하는 동안 Dock에서 해당 아이콘을 control- 클릭하고 옵션을 선택한 다음 디스플레이 2에 할당하기 만하면됩니다.


0
curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand

그건 그렇고 이것은 논리적으로 브라우저를 생성하는 e2e를 실행하는 모든 개발자에게 필요한 기능입니다. 개발 환경에서 계속 팝업되고 실수로 상호 작용하여 테스트가 실패하는 창을 처리하는 것은 성가신 일입니다.


0

헤드리스 크롬을 사용하는 것이 최선의 방법이거나 사이트에 직접 게시하여 상호 작용할 수 있으므로 다른 작업 / 프로세스에 대한 많은 컴퓨팅 성능을 절약 할 수 있습니다. CPU가 많은 요소를 사용하여 여러 사이트에서 신발을 검색하는 웹 자동화 봇을 테스트 할 때 이것을 사용합니다. 전력을 더 많이 절약하고 프로그램이 간단할수록 더 빠른 속도로 한 번에 여러 프로세스를 실행하는 것이 더 쉽습니다. 신뢰할 수 있음.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.