문제

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

도움이 되었습니까?

해결책

몇 가지 옵션이 있습니다.

  • 셀레늄 그리드를 사용하여 브라우저가 완전히 다른 컴퓨터 (또는 가상 머신)에서 열리도록 브라우저를 확인하려면 VNC 또는 원격 데스크톱 연결에 연결할 수 있습니다. 또한 또 다른 옵션 : 해당 원격 서버에서 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 버전의 권한 제약 조건을 제외하고는 셀레늄이 셀레늄이 우리가 할 수있는 Windows 2000과 같은 데스크탑에 액세스하는 것을 방해 할 수 있습니다.

  • 또 다른 옵션은 '실제'브라우저를 시작하지 않는 WebDriver htmlUnitdriver와 같은 것을 사용하는 것입니다. http://code.google.com/p/webdriver/ . 또한 Phantomjs 옵션과 사용할 수있는 '헤드리스 크롬'이 있습니다.

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

다른 팁

Linux에서는 Headless (가상) 디스플레이에서 WebDriver를 실행하여 브라우저를 숨길 수 있습니다. XVFB (X Virtual Framebuffer)로 수행 할 수 있습니다.

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

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

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

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

단지 Phantomjs를 설치하십시오. 그런 다음이 줄을 변경하십시오.

driver = webdriver.Firefox()

에게:

driver = webdriver.PhantomJS()

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

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

테스트가 완전히 숨겨져 있으면 창문에 있다면 솔루션이 많지 않다고 생각합니다.

내가 할 일은 LAN의 컴퓨터를 항상 온라인 상태로 만들고 Selenium RC 서버를 실행하기 위해 노력합니다. 따라서 해당 컴퓨터의 IP를 사용하여 테스트를 실행합니다. 예를 들어:

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

(이것이 서버를 실행하는 컴퓨터의 IP라는 것을 고려합니다).

해당 설정을 사용하면 컴퓨터에서 테스트를 실행하고 브라우저 및 RC 서버 창이 다른 컴퓨터에 있으며 한 번은 다시 완료됩니다.

Linux에서는 가상 디스플레이에서 테스트 브라우저를 실행할 수 있습니다. 당신은 필요합니다 xvfb 가상 X 서버를 생성하기위한 패키지. 데비안 기반 배포판에서 그냥 실행하십시오

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에서 만든 모든 브라우저 창은 이제 가상 디스플레이를 사용하며 보이지 않습니다.

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

이것이 내가 Linux 데스크탑 (Ubuntu)에서 Maven으로 테스트를 실행하는 방법입니다. 나는 Firefox Webdriver와 함께 일할 수 없어서 항상 집중하고 있습니다.

XVFB를 설치했습니다

XVFB -RUN -A MVN CLEAN 설치

그게 다야

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

Chrome 57 은이 기능을 방금 시작했습니다. Chromedriver를 통해 -머리가없는 깃발을 전달하여 사용할 수 있습니다. 자세한 내용은 토론을 참조하십시오. 이 질문

Phantomjs 관련 프로젝트가 있습니다 고스트 드라이버 이는 WebDriver 와이어 JSON 프로토콜을 사용하여 셀레늄 그리드에서 Phantomjs 인스턴스를 실행하기위한 것입니다. 이 질문은 지금 4 살이지만 아마도 당신이 찾고있는 것일 것입니다.

MacOSX에서는 브라우저 창을 숨길 수 없었지만 적어도 다른 디스플레이로 이동하는 방법을 알아 내서 워크 플로우가 너무 방해되지 않습니다. Firefox가 테스트를 실행하는 동안 도크에서 아이콘을 제어 클릭하고 옵션을 선택한 다음 Display 2에 할당하십시오.

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를 실행하는 모든 개발자가 필요한 기능입니다. 개발 환경에서는 계속 튀어 나오는 창을 다루고 실수로 테스트에 실패 할 수있는 창을 처리하는 것이 성가신 일입니다.

헤드리스 크롬을 사용하는 것이 가장 좋은 방법이거나 사이트에 직접 게시하여 상호 작용할 수 있으므로 다른 것들/프로세스에 대한 많은 컴퓨팅 전력을 절약 할 수 있습니다. CPU 무거운 요소를 사용하여 여러 사이트에서 신발을 검색하는 웹 자동화 봇을 테스트 할 때 이것을 사용합니다. 신뢰할 수 있음.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top