Rozważamy aktualizację naszego serwera produkcyjnego z Ubuntu - desktop 10.04 do Ubuntu - serwer 12.04.
Mamy różne usługi działające w naszym obecnym systemie operacyjnym, takie jak Selenium Web Driver. Moje pytanie brzmi: czy sterownik sieciowy Selenium można uruchomić z systemu opartego na CLI?
Od razu myślę, że nie może, ponieważ opiera się na Firefoksie, ale chciałbym, żeby ktoś udowodnił mi, że się mylę!
Odpowiedzi:
To, czego szukasz, to plik przeglądarka bezgłowa.
Tak, możliwe jest bezgłowe uruchomienie Selenium w przeglądarce Firefox. Oto post, który możesz śledzić.
Oto podsumowanie kroków konfiguracji Xvfb
źródło
Xvfb
, a nie instalacji i konfiguracji Selenium (co wymaga posiadaniageckodriver
na ścieżce).subprocess.Popen('Xvfb...')
lubos.system('Xvfb...')
, ale pamiętaj, aby zrobić to przed zaimportowaniem webdrivera.Chrome ma teraz tryb bezgłowy:
źródło
Tak. Możesz użyć
HTMLUnitDriver
zamiast tegoFirefoxDriver
podczas uruchamiania webdrivera. To jest bezgłowa konfiguracja przeglądarki. Szczegóły można znaleźć tutaj .źródło
Jeśli potrzebujesz bezgłowej obsługi przeglądarki, możesz zastosować inne podejście.
https://github.com/detro/ghostdriver
Zostało ogłoszone podczas Konferencji Selenium i nadal jest w fazie rozwoju. Używa PhantomJS jako przeglądarki i jest znacznie lepszy niż HTMLUnitDriver, nie ma jeszcze zrzutów ekranu, ale jest nadal w fazie rozwoju.
źródło
Opcjonalne jest użycie w
pyvirtualdisplay
ten sposób:Krótsza wersja to:
Jest to generalnie zamknięta w Pythonie
xvfb
i jakoś bardziej wygodna.Nawiasem mówiąc, chociaż
PhantomJS
jest to przeglądarka bezgłowa i żadne okno nie będzie otwarte, jeśli z niej korzystasz, wydaje się, żePhantomJS
nadal potrzebuje środowiska GUI do działania.Otrzymałem kod błędu -6, gdy używam
PhantomJS()
zamiastFirefox()
w trybie bezgłowym (konsola podłączona do putty). Jednak wszystko jest w porządku w środowisku graficznym.źródło
AKTUALIZACJA: Nie potrzebujesz już XVFB, aby uruchomić przeglądarkę Firefox bezgłową. Firefox v55 + w systemie Linux i Firefox v56 + w systemie Windows / Mac obsługuje teraz wykonywanie bezgłowe.
Dodałem tutaj dokumentację, jak używać:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
źródło
Inną opcją jest GhostDriver, który jest teraz oficjalnie obsługiwany przez WebDriver: Ghostdriver faktyczny wzrost wydajności
źródło
Należy pamiętać, że klient sieciowy HtmlUnitDriver jest jednowątkowy, a Ghostdriver ma tylko 40% funkcji, aby być WebDriver.
Mimo to Ghostdriver działał poprawnie do testów i mam problemy z połączeniem go z hubem WebDriver.
źródło
Tak, możesz uruchamiać skrypty testowe bez przeglądarki, ale powinieneś uruchamiać je w trybie bezgłowym.
źródło
być może musisz ustawić rozmiar okna. tak jak:
jeśli również nie działa, spróbuj zwiększyć rozmiar okna.
źródło
Zainstaluj i uruchom przeglądarkę Firefox w kontenerach:
Połącz za pomocą
webdriver.Remote
:źródło