2012-07-01 7 views
4

나는 Selenium을 Xvfb를 사용하는 헤드리스 우분투 서버에서 here으로 실행하고 있습니다.헤드리스 셀렌의 성능 향상

내가 함께 Xvfb가 시작 해요 :

#!/bin/bash 
disp=${1:-"99"} 
/usr/bin/Xvfb :$disp -ac 2>&1 | tee /var/log/run-xvfb.log 

그리고 난과 셀레늄 - 서버를 시작 해요 : 나는 '

from selenium import selenium 
sel = selenium('localhost', 4444, '*firefox', 'http://www.google.com') 
sel.start() # This takes forever!!! 
<do stuff> 

: 같은

#!/bin/bash 
disp=${1:-"0"} 
export DISPLAY=":$disp" && java -jar selenium-server-standalone-2.21.0.jar 2>&1 | tee /var/log/run-selenium-server.log 

내 시작 코드가 보인다 보통 그것을 찾는다면 을 완료하는 데 15 분 이상 걸릴 수 있습니다. 이상하게도 로그 파일은 기록되지 않으므로 오류가 발생하는지는 알 수 없습니다. 그것은 단지 "매달린"것처럼 보입니다.

우분투이지만 일반적인 데스크탑 GUI 설정이있는 로컬 컴퓨터에서이 동일한 코드를 실행하면 1 분 이내에 완료되므로 서버에서 무언가 잘못된 정보가 표시 될 수 있습니다. 무엇이 잘못되었는지 진단하고 Selenium의 끔찍한 성능을 개선하려면 어떻게해야합니까?

답변

0

귀하의 질문에 귀하에게 좋은 답변을 드릴만큼 세부 정보가 충분하지는 않지만 도움이되는 몇 가지 팁을 제공해 드릴 수 있습니다. 로그가 없으면 디버깅하는 것이 어렵습니다.

기본적으로 Selenium은 실제 사용자를 가능한 한 가깝게 에뮬레이션하려고합니다. 즉, 페이지를로드하기 전에 페이지가 완전히로드 될 때까지 기다릴 것입니다. 서드 파티 스크립트가 느리면 긴 전화 끊기가 발생할 수 있습니다. 모든 테스트를 꽤 속도를 빠르게해야이 줄을 제거

self.driver.implicitly_wait(20) 

:

하면

는 기본적으로 셀레늄 BaseTest (unittest.TestCase)도이 라인을 포함 것을 발견했다. 이 라인은 다른 초기화를 사용하기 때문에 정상적인 Selenium 설정에 의해 무시 될 수 있습니다.

더 빠른 속도 향상을 위해 PhantomJS를 살펴 보시기 바랍니다. 최적화를하더라도 Firefox 테스트는 몇 분이 걸릴 것입니다.