2014-02-06 3 views
0

헤드리스 데비안 7 VM에서 Selenium Server, ChromeDriver 및 Chrome의 최신 버전을 설치하고 Xvfb에서 실행되는 Chrome 화면을 통해 수동으로 실행합니다. 이 작업은 매우 성공적이었고 지금은이 작업을 프로덕션 우분투 12.04 VM으로 전송하려고합니다. 보안을 위해 잠긴 사용자로 가능한 한 데몬에 가깝게 실행하여 무인 상태로 둘 수 있습니다.
배포를 처리하기 위해 Fabric 스크립트를 작성했지만 마지막 장애물 인 Selenium과 Xvfb를 시작했습니다. Selenium은 Xvfb를 실행하는 사용자 정의 .screenrc를 사용하여 실행되지만 DISPLAY 변수가 제대로 내보내지지 않을 것으로 판단됩니다. VNC를 프레임 버퍼에 넣었고 RemoteWebDriver 프로젝트를 시작했습니다.이 프로젝트는 Selenium에 연결하여 ChromeDriver를 끕니다. Chrome, Chrome 창은 나타나지 않으며 60 초 후에 프로젝트 시간이 초과됩니다.Selenium ChromeDriver - 데몬으로 실행하고 배포하는 방법?

export DISPLAY=:10 

과 .screenrc을 읽에 : 나는 selenium-daemon 사용자의 .bashrc에 다음 줄을 추가 한

screen -t 'Xvfb' 0 /usr/bin/Xvfb :10 -screen 0 1366x768x24 -ac 
screen -t 'Selenium' 1 /bin/bash --rcfile /home/selenium-daemon/.bashrc -c '/usr/bin/java -jar /usr/local/bin/selenium-server-standalone-2.39.0.jar -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -port 4444 > /tmp/selenium.log' 

화면이

sudo("screen -dmS selenium -c /home/selenium-darmon/.screenrc & sleep 5", user="selenium-daemon") 
와 직물에 의해 쫓겨되고있다

--rcfile을 명시 적으로 설정하려고했는데 사용하고 있는지 확실하지 않았지만 도움이되지 않았습니다. 나는 이것이 문제라고 확신한다. 내 테스트 VM에서 비슷한 문제가 있었고 DISPLAY 변수가 올바르게 설정되었는지 확인하여 해결되었습니다. 현재 selenium-daemon 사용자가 잠겨 화면 세션에 연결할 수 없습니다.
Fabric에서 Screen을 호출하면 즉시 반환된다는 사실을 발견했습니다. 이것에 의해 어떻게 든 화면이 멈추게됩니다. 위의 sleep 호출로이 문제를 해결 했으므로 화면을 만들 충분한 시간이 있습니다. 예상 되나요? 아니면 내 문제와 관련이있을 수 있습니까?
Fabric/Screen 명령을 수동으로 실행해도 테스트 VM에서 사용한 명령에서 수정되었지만 문제가 해결되지 않습니다. 어떤 포인터?
나중에 생각해 보면, x11vnc 서버를 Xvfb에 연결해도 되겠지만, .screenrc에 작업 호출을하면 완전히 나타나지 않습니다. 그것을 실행하지 않습니다 시작되기 전에라도 sleep 전화 :

screen -t VNC 2 /usr/bin/x11vnc -display :10 -bg -nopw -xkb -listen 127.0.0.1 

편집 : 나는 내가 VNC의 문제를 해결 생각, 복사 - 붙여 넣기 명령은 일반적으로 가난한 생각입니다! 다시 들어가서 일부 깃발을 다음으로 변경했습니다.

screen -t VNC 2 /usr/bin/x11vnc -display WAIT:10 -nopw -xkb -forever -shared -listen 127.0.0.1 -logfile /tmp/x11vnc.log 

훨씬 더 많은 성공. ChromeDriver를 수동으로 시작하여 이제는 Fabric으로 시작할 수 있는지 여부를 조사했습니다.

답변

2

어쩌면 screen 대신 supervisord을 사용하여 장시간 실행되는 프로세스를 관리 할 수 ​​있습니다.

+0

완료! 정확히 필요한 것! 제안을 주셔서 감사 드리며, 지금은 (셀레늄 데몬 쉘을 줄 필요없이) 작동하고 있습니다. 이것은 쉽게 스크립트 할 수 있어야합니다. 매우 감사. – Gargravarr

관련 문제