2011-03-07 5 views
6

현재 매 시간마다 실행되는 셀렌 RC로 테스트를 자동화하고 있습니다. 모든 것이 순조롭게 진행되지만 파이어 폭스가 충돌하거나 셀레늄 RC가 멈추는 몇 가지 경우가 있습니다.이 두 가지 문제로 인해 테스트가 계속되지 않고 중단됩니다. 누구든지 firefox.exe 및 java.exe (셀레늄 인스턴스)를 충돌 또는 중단시킬 때 죽일 수있는 방법을 알고 있으므로 테스트를 다시 시작할 수 있습니다. 내가 보는 문제는 파이어 폭스 나 셀레늄이 매달려있을 때 자동으로 탐지하여 자동으로 스크립트를 통해 죽이는 것이다.셀렌 크래시 처리 방법

감사합니다.

답변

1

는 확실하지 난 당신에 대한 궁극적 인 해답을 가지고 있지만, 나는 몇 가지 아이디어를 제공 할 수 있습니다 :

  • 셀레늄은 파이어 폭스 동결 처리하는 타임 아웃을해야합니다. 올바르게 설정되고 작동하는지 다시 한 번 확인해야합니다.
  • 셀렌 (크루즈 컨트롤 또는 팀 도시와 같은)을 실행중인 모든 시스템은 셀렌 서버를 죽일 수있는 시간 초과가 있어야합니다.
  • 사람들은 하루에 한 번씩 서버를 재부팅하고 긍정적 인 결과를보고하는 경우가 종종 있습니다. (나)
  • 이 문제의 근본 원인을 알아내는 것이 좋습니다. 셀레늄은 실망스럽고 색다른 느낌이 들지만, 파고 들어 본 후에는 항상 진단 할 수있는 문제 (예 : this)를 발견했습니다.

(괜찮다 끔찍한 극단으로 우리를 밀어 :.. 우리는 실제로 SSH 작업이 윈도우 머신에 로그인 거기에 셀레늄 서버를 다시 시작 인 TeamCity 트리거 쓴 궁극적으로 우리가 그것을 사용하지 않은)

2

이상적 , 각 테스트는 기존의 Firefox 또는 IE 프로세스가 실행되지 않는 클린 상태에서 시작됩니다. test tearDown() 메소드에서 브라우저를 닫거나 종료해야합니다. 이 방법을 사용해도 때때로 누설 된 프로세스가 계속 침투 할 수 있습니다. Java RC를 통해 Windows에서 Selenium 서버를 실행하는 경우이 명령을 테스트의 startUp() 메소드에두면 브라우저/인스턴스가 실행되지 않도록 할 수 있습니다.

Runtime.getRuntime().exec("TASKKILL /F /IM Firefox.exe"); 
Runtime.getRuntime().exec("TASKKILL /F /IM iexplore.exe"); 

충돌이 발생하면 Firefox는 충돌을 나타내는 경고 대화 상자를 표시합니다. 필요한 경우이 대화 상자에서 "확인"버튼을 자동으로 누를 수있는 AutoIT와 같은 외부 도구를 통해이 창과 프로그래밍 방식으로 상호 작용할 수 있습니다. 팝업, 크래시, 경고 등을 처리하기 위해 백그라운드에서 계속 실행되는 외부 AutoIT 스크립트를 작성하는 것이 매우 유용하다는 것을 알았습니다.