2012-05-07 2 views
1

좋아, 이것은 까다 롭습니다. Webdriver 테스트를 실행하기 위해 일부 Windows 7 VM과 함께 Selenium Grid 2를 설정하려고합니다. 전체 프로세스를 자동화하기 위해 ssh를 통해 VM에 연결하는 앤트 스크립트를 사용하여 노드를 시작/중지/재구성합니다.셀레늄 그리드 2 over cygwin

모든 것이 잘 작동하며, 노드는 허브 호스트에 등록하고 테스트를 실행할 수 있습니다. 문제는 테스트를 실행하는 동안 브라우저 창을 볼 수 없다는 것입니다. 프로세스를 볼 수 있으며 테스트 로그가 실행되는 것을 볼 수 있지만 그래픽 인터페이스는 없습니다.

반면에 Windows를 통해 수동으로 노드를 시작하면 모든 것이 정상입니다.

cygwin에서 실행되는 프로세스가 Windows 디스플레이를 시작할 수 없다는 것이 문제이지만이 경우 오류가 발생하지 않아야한다고 생각합니까? 내가 생각하고있는 또 다른 옵션은 Webdriver가 HTMLunit을 대체 시스템으로 사용하지만 그 다음에 ... 테스트가 지속되고 CPU와 메모리를 소모하는 동안 Firefox가 프로세스를 보는 이유는 무엇입니까?

답변

2

ssh를 통해 Windows stdin, stdout 및 stderr 스트림과 만 교환 할 수 있습니다. ssh 연결은 그 스트림들을 터널링하고 아무것도하지 않습니다. 은 아니지만 데스크톱 개체가 Windows 컴퓨터에 있고 프로그램 (여기서는 브라우저)이 연결되어 있으며 모든 GUI 상호 작용이 여기에 있습니다.

  1. GUI에서 사용자 상호 작용이 필요하지 않은 경우 모든 것이 좋습니다. 대화 상자가 만들어지고 프로그램이 실행되면 응용 프로그램에서 대화 상자를 소멸시키고 응용 프로그램을 닫습니다. 아무것도 GUI의 측면에서 우리의 응용 프로그램을 차단하지 않습니다.

  2. 작성한 아직 보이지 않는 대화 상자에서 사용자 작업이 필요한 프로그램은 상호 작용이 진행될 때까지 기다리는 프로그램이 있습니다. 작업 관리자에서 프로세스를 보게되며 기다리지 만합니다. 대화 상자가 만들어지고 사실상 '표시'되는 Windows 바탕 화면에 액세스 할 수 없으므로 프로그램이 중단 된 것처럼 보입니다.

전형적인 경우 2는 사용자가 뭔가를하기를 기다리는 프로그램을 원격으로 실행하는 경우입니다 (예 : 메모장). 당신은 메모장을 시작할 수 있습니다, 그것은 스폰 될 것입니다 그리고 그것은 당신이 어떤 텍스트를 입력하거나 닫을 때까지 기다릴 것입니다.

Selenium 테스트를 사용하면 GUI가 작동하는 데 필요한 모든 브라우저의 상호 작용이 실제로 탐색 클릭 및 프로그램 종료를 수행하는 Selenium 서버에서 수행됩니다. GUI는 실제로 테스트 웹 서버를 탐색하여 생존하고 있으며, 실제로는 볼 수 없습니다.

DesktopsDesktop Creation에 대한 Microsoft 웹 사이트의 일부 추가 수치.

+0

답변 주셔서 감사합니다. 사실 모든 것이 작동하고 문제는 테스트가 실패했을 때 캡쳐 한 스크린 샷이 모두 검은 색이며 물론 디버깅과 오류를보기에 훨씬 편리하지 않습니다. 이 문제를 해결할 수있는 방법이 있습니까? – jasalguero

+0

이 문제를 해결하려면 일반적인 문제입니다. Google 및 스택 오버플로 및 기타 웹 사이트에 대한 여러 답변을 찾을 수 있습니다.나는 당신에게 몇 가지 옵션을 줄 것입니다 그 페이지를 조언 할 수 있습니다. http://bharath-marrivada.blogspot.fr/2011/11/blackscreenshots-qtp-selenium-windows.html – Boud

+0

하지만이 문제는 노드를 시작할 때 볼 수없는이 "데스크톱"개체에서 테스트가 실행될 때만 발생합니다 Windows에서 수동으로 모든 것이 잘 작동하므로이 솔루션에 적용 할 수있는 방법이 없다고 가정합니다. – jasalguero

0

테스트를보고 올바른 스크린 샷을 보려면 로그인해야하며 해당 테스트를 해당 사용자로 실행해야합니다. 모든 것이 단일 데스크톱 세션을 통해 실행되어야하므로 RDP를 사용하여 원격으로 시스템에 연결할 수 없습니다. 가장 좋은 방법은 VNC를 사용하는 것입니다. VNC는 이미 설정된 세션에 연결하기 때문입니다.