6

Mam Chrome bez głowy działający przez serwer Selenium, uruchamiając xvfb związany z DISPLAY: 10, a następnie uruchamiając Selenium z DISPLAY=:10 webdriver-manager start. Wszystko w porządku.Jak mogę uruchomić Chrome bez głowy z kątomierzem BEZ używając serwera Selenium

Mam również Chromedriver działa bezpośrednio z kątomierza, określając directConnect: true w moim kątomierza.conf.

Co chciałbym zrobić, to połączenie dwóch, tj. uruchom chromedriver bezpośrednio (NIE SELENIUM!), ale w jakiś sposób poinstruuj go, aby działał bezgłośnie na WYŚWIETLACZU: 10.

Pod względem topologii wszystko jest uruchamiane na komputerze programisty. Nie ma żadnych serwerów. W komentarzu poniżej wspomnę o serwerze węzłów: jest on używany do uruchamiania kątomierza zamiast zwykłego uruchamiania z wiersza poleceń. Chcę, żeby kątomierz działał na WYŚWIETLACZU: 0, więc widzę jego wyniki, błędy testowe itp. Kiedy spawnuje chrom przy użyciu chromowanej kontrolki, chcę, żeby chrome działało na DISPLAY: 10. Moją przyczyną tego jest to, że chcę, aby okno chrome było większe niż mój ekran fizyczny. Zobacz How can I screenshot the full height of a mobile form factor? dla tła.

+0

Cześć Andrew. To nie działa, ponieważ nie wiem, jak spróbować to zrobić.Nie mogę znaleźć nigdzie, by skonfigurować docelowy DISPLAY dla uruchomionej instancji chrome. – pinoyyid

+0

java nie wchodzi w to. kątomierz jest aplikacją węzła. DISPLAY dla aplikacji węzła to DISPLAY =: 0, ponieważ kątomierz działa na moim wyświetlaczu X. To wtedy, gdy kątomierz spawnuje chromowaną kolumnę, którą chcę połączyć z chromowanym napędem do DISPLAY =: 10 – pinoyyid

+0

Przepraszamy, skasowany, mylący komentarz. Oczywiście utknęły w trybie Java ... –

Odpowiedz

2

Miałem "Doh !!!" moment zen i cała sprawa jest znacznie łatwiejsza, niż myślałem.

Połączyłem stdout węzła/kątomierza (który chcę na moim ekranie) z wyświetlaczem X chromu (który chcę bez głowy na WYŚWIETLACZU: 10). Oczywiście są zupełnie inne !!!!

Po prostu prefiksowanie kątomierza z DISPLAY =: 10 np.

DISPLAY=:10 protractor /installation_test/conf-c-direct-noserver.js 

lub, w moim przypadku, ponieważ biegnę serwer węzła, który z kolei spawns kątomierz ...

DISPLAY=:10 npm start 

Więc kątomierz działa w moim terminalu i mogę oglądać stdout, podczas gdy DISPLAY =: 10 jest dziedziczone po warstwach połączeń i jest ostatecznie postrzegane i rozumiane przez Chrome.

2

Zgaduję topologii jest tak:

  • Box A: xvfb, DISPLAY=:10, selen Server chromedriver
  • Box B: DISPLAY=:0, węzeł, kątomierz (directConnect: true) chromedriver
  • Pole C: biegacz testowy.

nie wiem jak inaczej to może być rozplanowany, zważywszy, że DISPLAYis an environment variable, a nie parametr mają być przekazywane.

W takim przypadku, przy założeniu, że nie chcesz oddzielny xvfb zainstalowanego na Box B, a A jest osiągalny (plus przyzwoity połączenia) z B, rozwiązaniem jest po prostu ustawić:

DISPLAY=boxAHost:10 

na Box B.

Jeśli A nie jest osiągalne z B, najprościej jest po prostu zduplikować konfigurację xvfb zarówno na A, jak i B i mieć DISPLAY=:10 na obu.

+0

zobacz moje aktualizacje tego pytania, istnieje tylko jedno pudełko. zmienne środowiskowe mogą być specyficzne dla procesu, np. "DISPLAY =: 10 kątomierz" – pinoyyid

+0

Czy istnieje szansa, że ​​udostępnisz link do informacji o możliwości połączenia z procesem (być może w Twojej odpowiedzi)? Nie mogłem znaleźć nigdzie udokumentowanej dokumentacji. –

+0

Niestety @Andrew, nie rozumiem twojego pytania "link do procesu". Jeśli możesz wyjaśnić, z przyjemnością udzielę wszelkich informacji, które mam. Czy masz na myśli; wywołać chromedriver bezpośrednio, a nie przez serwer Selenium? Jeśli tak, to jest to udokumentowane https://github.com/angular/protractor/blob/master/docs/referenceConf.js, patrz linia 91'directConnect: false, ' – pinoyyid