Mam zestaw testów selenu, który przeprowadza wiele testów i przy każdym nowym teście otwiera okno przeglądarki nad wszystkimi innymi otwartymi oknami. Bardzo irytujące podczas pracy w lokalnym środowisku. Czy jest jakiś sposób, aby powiedzieć selenowi lub systemowi operacyjnemu (MAC), aby otwierał okna w tle?
selenium
selenium-webdriver
webdriver
selenium-grid
kevzettler
źródło
źródło
driver = webdriver.Firefox()
w swoim kodzie, podążaj za moją odpowiedzią tutaj: stackoverflow.com/a/23898148/1515819Odpowiedzi:
Jest kilka sposobów, ale nie jest to proste „ustawienie wartości konfiguracyjnej”. Jeśli nie zainwestujesz w przeglądarkę bezgłową, która nie spełnia wymagań wszystkich, jest to trochę hack:
Jak ukryć okno przeglądarki Firefox (Selenium WebDriver)?
i
Czy można ukryć przeglądarkę w Selenium RC?
Możesz „rzekomo” przekazać niektóre parametry do Chrome, w szczególności:
--no-startup-window
Zwróć uwagę, że w przypadku niektórych przeglądarek, zwłaszcza IE, nie będziesz mieć fokusu na testach.
Możesz także trochę zhakować za pomocą AutoIT, aby ukryć okno po jego otwarciu.
źródło
Jeśli używasz sterownika sieciowego Selenium z Pythonem, możesz użyć PyVirtualDisplay, opakowania Pythona dla Xvfb i Xephyr.
PyVirtualDisplay wymaga Xvfb jako zależności. W systemie Ubuntu najpierw zainstaluj Xvfb:
następnie zainstaluj PyVirtualDisplay z Pypi:
Przykładowy skrypt Selenium w Pythonie w trybie headless z PyVirtualDisplay:
EDYTUJ Wstępną odpowiedź opublikowano w 2014 roku, a teraz jesteśmy u progu 2018 roku, podobnie jak wszystkie inne przeglądarki również się rozwinęły. Chrome ma teraz całkowicie bezgłową wersję, która eliminuje potrzebę korzystania z bibliotek innych firm, aby ukryć okno interfejsu użytkownika. Przykładowy kod jest następujący:
źródło
Chrome 57 ma opcję przekazania flagi --headless, która sprawia, że okno jest niewidoczne.
Ta flaga różni się od --no-startup-window, ponieważ ostatnia opcja nie uruchamia okna. Służy do hostowania aplikacji działających w tle, jak mówi ta strona .
Kod Java przekazujący flagę do Selenium webdriver (ChromeDriver):
źródło
Aby uruchomić bez przeglądarki, możesz uruchomić ją w trybie bezgłowym .
Pokażę wam jeden przykład w Pythonie, który teraz pracuje dla mnie
Dodam też trochę więcej informacji na ten temat na oficjalnej stronie Google https://developers.google.com/web/updates/2017/04/headless-chrome
źródło
Od Chrome 57 masz bezgłowy argument:
Tryb bezgłowy przeglądarki Chrome działa o 30,97% lepiej niż wersja z interfejsem użytkownika. Drugi sterownik bezgłowy PhantomJS zapewnia o 34,92% lepszą wydajność niż tryb bezgłowy Chrome.
PhantomJSDriver
Tryb bezgłowy przeglądarki Mozilla Firefox działa o 3,68% lepiej niż wersja z interfejsem użytkownika. To rozczarowanie, ponieważ tryb bezgłowy Chrome osiąga> 30% lepszy czas niż tryb UI. Drugi sterownik bezgłowy PhantomJS zapewnia o 34,92% lepszą wydajność niż tryb bezgłowy Chrome. Zaskakujące dla mnie przeglądarka Edge pokonuje je wszystkie.
Jest to dostępne w przeglądarce Firefox 57+
Tryb bezgłowy przeglądarki Mozilla Firefox działa o 3,68% lepiej niż wersja z interfejsem użytkownika. To rozczarowanie, ponieważ tryb bezgłowy Chrome osiąga> 30% lepszy czas niż tryb UI. Drugi sterownik bezgłowy PhantomJS zapewnia o 34,92% lepszą wydajność niż tryb bezgłowy Chrome. Zaskakujące dla mnie przeglądarka Edge pokonuje je wszystkie.
źródło
Sugeruję użycie Phantom Js, aby uzyskać więcej informacji, odwiedź oficjalną stronę Phantom
po pobraniu PhantomJs.exe należy zaimportować do swojego projektu jak widać na poniższym obrazku Phantomjs jest wewnątrz wspólnej >> Biblioteka >> phantomjs.exe
Teraz wszystko, co musisz zrobić w kodzie Selenium, to zmienić linię
Na coś takiego
To wszystko, na mnie zadziałało. i na pewno będzie dla ciebie pracował, Pozdrawiam
źródło
W systemie Windows możesz użyć win32gui:
Przykład:
Jest jednak jeden problem z tym rozwiązaniem - użycie metody send_keys powoduje wyświetlenie okna. Możesz sobie z tym poradzić używając javascript, który nie wyświetla okna:
źródło
Użyłem tego kodu dla przeglądarki Firefox w systemie Windows i otrzymałem odpowiedź: (odniesienie tutaj )
Ale nie testuję tego dla innych przeglądarek.
źródło
Może być w opcjach. Oto identyczny kod java.
źródło
Jest to proste rozwiązanie NodeJS, które działa w nowej wersji 4.x (może także 3.x) Selenium.
Chrom:
Firefox:
Całość działa po prostu w tle. Dokładnie to, czego chcemy.
źródło
Jeśli używasz sterownika Chrome, możesz użyć tego bardzo prostego kodu: (u mnie zadziałało)
źródło
Na * nix możesz także uruchomić bezgłowy serwer X, taki jak Xvfb i wskazać mu zmienną DISPLAY:
Fałszywy serwer X do testów?
źródło
Oto rozwiązanie .net, które zadziałało dla mnie:
Pobierz PhantomJs tutaj http://phantomjs.org/download.html
Skopiuj plik .exe z folderu bin w pobranym pliku i wklej go do folderu bin debug / release projektu programu Visual Studio.
Dodaj to za pomocą
W swoim kodzie otwórz sterownik w ten sposób:
źródło
Jeśli używasz Ubuntu (Gnome), jednym prostym obejściem jest instalacja rozszerzenia Gnome auto-move-window: https://extensions.gnome.org/extension/16/auto-move-windows/
Następnie ustaw przeglądarkę (np. Chrome) na inny obszar roboczy (np. Workspace 2). Przeglądarka będzie po cichu działać w innym obszarze roboczym i nie będzie Ci już przeszkadzać. Nadal możesz bez przerwy korzystać z Chrome w swoim obszarze roboczym.
źródło
cześć, miałem ten sam problem z moim chromedriver'em używającym Pythona i options.add_argument ("headless") nie działał dla mnie, ale potem zdałem sobie sprawę, jak to naprawić, więc umieszczam go w kodzie poniżej
Mam nadzieję, że to zadziała dla ciebie.
źródło
Jednym ze sposobów osiągnięcia tego jest uruchomienie przeglądarki w trybie bezgłowym. Kolejną zaletą jest to, że testy są wykonywane szybciej.
Proszę znaleźć kod poniżej, aby ustawić tryb bezgłowy w przeglądarce Chrome.
źródło