2013-08-21 31 views
10

Mój problem polega na tym, jak uzyskać izolowane strumienie wideo z instancji przeglądarki SeleniumServer. Pozwól mi wyjaśnić.Jak uruchomić selenowe sesje serwerowe na różnych ekranach xvfb?

Mam serwer koncentrujący serwer Selenium na komputerze z systemem Ubuntu Server i węzeł serwera Selenium działający na tym samym serwerze, więc używam trybu "bezgłowego" selenu przy użyciu xvfb. Uruchomiłem węzły takie jak to: DISPLAY=:99 java -jar selenium-server-standalone.jar -role node -hub http://localhost:4444/grid/register

Następnie chcę uzyskać strumienie wideo z testów tam uruchomionych, więc zainstalowałem x11server podłączony do wirtualnego wyświetlacza xvfb, a następnie mogę połączyć się z serwerem zdalnym za pomocą VNC i widzę Przetwarzanie testów. Problem polega na tym, że wszystkie instancje przeglądarki w węźle renderowane na tym samym ekranie wirtualnym (# 99) i kiedy muszę przeprowadzić kilka testów w tym samym czasie, widzę wiele instancji przeglądarki nakładających się jeden po drugim. Ale chcę nagrać strumienie wideo z testami błędów, więc nie mogę tego zrobić. Więc muszę mieć prawdopodobieństwo połączenia się z każdym wirtualnym wyświetlaczem przeglądarki oddzielnie.

Myślę, że mogę rozwiązać ten problem, modyfikując serwer xvfb, aby jakoś zmusić go do utworzenia izolowanego wirtualnego ekranu lub ekranu (xvfb obsługuje wiele ekranów, prawda?) Dla każdego klienta (instancja przeglądarki w moim przypadku). Ale próbowałem to zrobić i nie otrzymałem wyniku. Mogę też użyć innego wirtualnego wyświetlacza (nie xvfb), jeśli jest to konieczne, aby rozwiązać ten problem.

Proszę, pomóż mi uzyskać izolowane strumienie wideo z każdej instancji przeglądarki :) Bardzo dziękuję i przepraszam za mój angielski.

+1

Wow, to, co próbujesz zrobić, jest naprawdę interesujące. Czy myślisz o udostępnieniu HOWTO (być może na blogu) po tym, jak to wszystko zrozumiesz? Myślę, że wielu ludzi Selenium może być zainteresowanych tym, jak robić takie rzeczy. – djangofan

Odpowiedz

1

z piastą selenu, można dodać przeglądarek w osobno w swoich sesjach Xvfb

java -jar selenium-server-standalone-2.33.0.jar -role hub& 

następnie podłączyć każdą przeglądarkę oddzielnie w swojej własnej sesji Xvfb, wyświetlania i portu

export DISPLAY=:11 
Xvfb :11 -screen 0 1024x768x16 & 

java -jar selenium-server-standalone-2.33.0.jar \ 
    -role node \ 
    -port 4441 
    -hub http://localhost:4444/grid/register \ 
    -browser "browserName=firefox,version=19,maxInstances=5"& 
+0

To nie zadziała, jeśli nie podasz opcji numeru portu. W przeciwnym razie 2 lub więcej usług nie może nasłuchiwać na tym samym porcie 4444. – djangofan

+0

koncentrator znajduje się na 4444, ale mówię o kliencie na jego domyślnym porcie. port można określić za pomocą opcji -port dla węzła. Zaktualizowałem przykład – KeepCalmAndCarryOn

1

Dla tego rodzaju użycie, zazwyczaj można użyć polecenia xvfb-run (które może automatycznie wybrać wyświetlacz, ale można go skonfigurować).

Następnie możesz utworzyć skrypt startowy firefox, który wykonałby xvfb-run firefox, który mógłbyś użyć jako polecenie startu selox firefox (określone jako FirefoxBinary)