2014-10-20 6 views
11

우리는 전방위 웹 UI 테스트를 수행 할 수 있도록 Selenium과 ChromeDriver를 사용하여 테스트 팩의 일부로 페이지로드/상호 작용을 자동화하고 있습니다.Selenium Server 및 ChromeDriver를 Windows 서비스로 실행

이것은 (개발자의 로컬 컴퓨터에서) 개발자 테스트 중에 예상대로 동작하지만 계속적인 통합 빌드의 일부로 이러한 검사를 수행하는 데 어려움을 겪고 있습니다.

서버 플랜트는 * NIX 기반이며 모든 CI 인프라가이 시스템에서 실행됩니다. Windows에서 Chrome을 테스트 할 수 있도록 (우리의 전달 메커니즘), 우리는 Selenium Grid를 구성했습니다. CI 테스트가 실행되면 테스트를 수행 할 Windows 노드를 찾기 위해 그리드에 액세스합니다.

우리는 이러한 테스트를 실행하기 위해 전적으로 제공된 Windows 데스크톱을 가지고 있습니다. 여기에는 Windows 7의 표준 엔터프라이즈 빌드가 포함되어 있습니다.이 컴퓨터는 IT 부서의 업데이트 정책에 따라 주기적으로 재부팅됩니다.

Selenium 서버가 항상 실행되도록하기 위해 "노드"모드에서 실행되는 Selenium Server를 Windows 서비스로 추가했습니다. Selenium Server는 시뮬레이션 된 사용자 상호 작용을 호출하기 위해 ChromeDriver를 시작하도록 구성됩니다.

그러나 CI에서 테스트를 실행하면 시간 초과로 인해 실패합니다. 우리의 작업 이론은 서비스를 실행하는 시스템 사용자가 대화식 창을 만들 수 없다는 것입니다. 웹 검색을 통해 "세션 0"문제에 대한 언급이 제기되었지만 앞으로 나아갈 방법에 대한 건설적인 조언은 거의 없었습니다.

대화 형 세션에서 수동으로 Selenium Server 프로세스를 시작하는 것은 실제 테스트 회귀가 아닌 인프라 문제로 인해 실패한 취성 테스트로 이어 지므로 실행 가능한 솔루션이 아닙니다.


시스템을 재부팅 할 때마다 Windows 서비스를 통해 시작된 인스턴스가 Chrome 인스턴스를 시작할 수 있습니까?

답변

6

지금은 도움이되지 않습니다. 세션 0에서는 정상적으로 작동하지만 Chrome 업데이트가 지난 후에 대화 형 세션에서만 작동합니다.

관련 버그 :

https://code.google.com/p/selenium/issues/detail?id=8029 https://code.google.com/p/chromium/issues/detail?id=422218

+0

세션 0에서 작동하는 특정 버전의 Chrome이 있습니까? 제가 단순히 다운 그레이드 할 수 있다면, 이것은 선택 사항이 될 것입니다. – jwa

+1

38 이전 버전의 Chrome에서는 모든 것이 Windows 서비스로 정상적으로 작동합니다. 38 버전부터 - 셀렌과 함께 내 윈도우 서비스가 작동하지 않습니다. 다운 그레이드 크롬 해결 된 문제 – razon

+1

@razon이 무엇을 말하고 있는지 확인할 수 있습니다. Chrome 37은 서비스가 실행 중일 때 작동하는 마지막으로 알려진 버전입니다. –

3

당신은 윈도우 비스타 이후로 Windows 서비스로 셀레늄 그리드를 실행할 수 없습니다. Microsoft는 "세션 0 격리"라고 부릅니다. Windows 2000 또는 XP에서이 작업을 수행 할 수 있지만 Vista가 출시 된 이래로 Microsoft는 더 이상 Grid가 데스크탑 (또는 다른 UI 프로그램)과 상호 작용할 수 없게됩니다. 관계없이 "데스크톱과 상호 작용"확인란을 계속 사용한다는 사실에 관계없이 빨간색 청어입니다. 따라서 Selenium Grid가 세션에 액세스하려면 서버의 포 그라운드에서 Selenium Grid를 실행해야합니다. Windows Server를 실행하는 경우 이론적으로 여러 세션을 가질 수 있으며 Grid가 0이 아닌 사용자 세션 중 하나에서 포 그라운드로 실행되도록 할 수 있습니다.

+0

동의 :(nssm을 사용하여 서비스로 허브를 시작할 수 있지만 노드가 서비스로 시작되면 브라우저를 볼 수 없습니다. 일부 사람들에게는 문제가되지 않을 수도 있지만 그것은 나를위한 것입니다. 노드가 배치 파일로 실행됩니다. 자동 시작하려면 '시작'폴더에 추가하거나 더 까다로운 작업 스케줄러를 만드십시오. – oden

3

이 문제 (및 서비스로 Selenium Grid를 실행하기위한 기본 선택)에 대한 선호하는 해결책은 AlwaysUp이라는 간단한 도구를 사용하는 것입니다. 그것을 시도하는 무료 30 일 평가판이 있습니다.

가해야 할 일 :

에 노드가 실행이 방법을 서비스로서 컴퓨터 재시동 및 최신 버전의 Chrome에서 계속 작동합니다.

컴퓨터에 로그인하는 데 사용하는 사용자 계정이 서비스로 노드를 실행하기 위해 지정한 사용자 계정과 다른 경우 다른 사용자로 실행되는 동안 브라우저에서 데스크탑에 팝업이 표시되지 않습니다 세션. 결과적으로 정상적인 서비스로 실행되는 것과 거의 동일하지만 Session 0 문제가 발생합니다.

+0

무료 NSSM과 어떻게 다른가요? https://nssm.cc/ –

12

NSSM으로 쉽게 수행 할 수 있습니다. 서비스 설치는 다음과 같습니다

nssm install seleniumhub java -jar C:\selenium\selenium-server-standalone-2.45.0.jar -role hub -hubConfig C:\selenium\hub.json 
nssm install seleniumnode java -jar C:\selenium\selenium-server-standalone-2.45.0.jar -role node -nodeConfig C:\selenium\node.json 

그것은 필요한 경우 서비스를 제거하기 위해 쉽게 방법을 제공합니다

nssm remove seleniumnode confirm 

추가 대상을 PATH 변수에 nssm 및 관리자로 콘솔에서 실행

+0

NSSM이 의미하는 바를 알아 냈을 때 웃었습니다. –

+0

작동했지만 스크린 샷이 이제 검은 색 화면처럼 보입니다 . – SLY

+0

IE 문제 일 것 같습니다. – SLY

0

네, NSSM을 사용해야합니다. 중요한 것은 "로그온"탭이나 다른 유효한 계정에 Windows 계정을 추가한다는 것입니다. "로컬 시스템 계정"옵션을 사용하여 노드를 실행하면 세션 0 문제가 발생합니다. 일반 사용자 세션에서 노드는 백그라운드에서 원활하게 보이지 않습니다.

관련 문제