Używam Selenium RC do automatyzacji niektórych operacji przeglądarki, ale chcę, aby przeglądarka była niewidoczna. czy to możliwe? W jaki sposób? A co z siatką selenową? Czy mogę również ukryć okno Selenium RC?
python
selenium
selenium-rc
Yatendra Goel
źródło
źródło
Odpowiedzi:
Jest kilka opcji:
Możesz użyć Selenium Grid, aby przeglądarka była otwierana na zupełnie innej maszynie (lub maszynie wirtualnej), z którą możesz się połączyć za pomocą VNC lub Remote Desktop Connection, jeśli chcesz zobaczyć przeglądarkę. Inna opcja: jeśli uruchomisz proces Jenkins na pierwszym planie na tym zdalnym serwerze, może on wykonać projekt testowy na pulpicie.
Możesz uruchomić Selenium „headless” na Linuksie w XVFB. Nigdy nie próbowałem tego robić i wątpię, czy naprawdę warto to zrobić. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
Możesz opakować Selenium RC w usługę Windows. http://support.microsoft.com/kb/137890 . Tyle tylko, że ograniczenia uprawnień w późniejszych wersjach systemu Windows prawdopodobnie uniemożliwią Selenium dostęp do pulpitu, tak jak system Windows 2000, który nam na to pozwalał.
Inną opcją byłoby użycie czegoś takiego jak WebDriver HTMLUnitDriver, który nie uruchamia „prawdziwej” przeglądarki. http://code.google.com/p/webdriver/ . Istnieje również opcja PhantomJS, a także `` bezgłowy Chrome '', którego możesz użyć.
Oczywiście istnieje również opcja skorzystania z usługi takiej jak SauceLabs, w której możesz uruchomić testy w chmurze. Po zakończeniu testów możesz obejrzeć film z ich uruchomieniem.
źródło
W systemie Linux można uruchomić WebDriver na bezgłowym (wirtualnym) wyświetlaczu, aby ukryć przeglądarkę. Można to zrobić za pomocą Xvfb (wirtualnego bufora ramki X).
Możesz kontrolować Xvfb bezpośrednio z kodu Pythona za pomocą
xvfbwrapper
: https://github.com/cgoldberg/xvfbwrapperKod Pythona do uruchamiania bezgłowego wyglądałby tak:
from selenium import webdriver from xvfbwrapper import Xvfb display = Xvfb() display.start() # now Firefox will run in a virtual display. # you will not see the browser. driver = webdriver.Firefox() driver.get('http://www.google.com') print(driver.title) driver.quit() display.stop()
Zainstaluj zależności w systemie Debian / Ubuntu:
źródło
Bez problemu udało mi się ukryć okno przeglądarki.
Wystarczy zainstalować PhantomJS . Następnie zmień tę linię:
do:
Reszta kodu nie będzie musiała zostać zmieniona i żadna przeglądarka się nie otworzy. Do celów debugowania używaj
driver.save_screenshot('screen.png')
na różnych etapach kodu.źródło
driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
+1 dla Selenium RC jako usługi systemu Windows.
Ponieważ testy są całkowicie ukryte, myślę, że nie masz zbyt wielu rozwiązań, jeśli korzystasz z systemu Windows.
Co ja bym zrobił, aby zadedykować komputer w twojej sieci LAN, aby był cały czas online i miał działający serwer RC z selenem. Więc używasz adresu IP tego komputera zamiast lokalnego hosta do przeprowadzania testów. Na przykład:
browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")
(biorąc pod uwagę, że jest to adres IP komputera, na którym działa serwer).
Mając taką konfigurację, uruchamiasz testy na swoim komputerze, przeglądarki i okno serwera RC są na innym komputerze i po zakończeniu wróć do swojego.
źródło
W systemie Linux możesz uruchomić przeglądarkę testową na wirtualnym wyświetlaczu. Będziesz potrzebował
xvfb
pakietu do stworzenia wirtualnego serwera X. W dystrybucjach opartych na Debianie po prostu uruchomJest fajne narzędzie
ephemeral-x.sh
, które wygodnie ustawi dowolne polecenie do uruchomienia na wirtualnym wyświetlaczu. Pobierz go i nadaj mu wykonywalny:Następnie możesz po prostu użyć go do uruchomienia serwera Selenium:
Wszystkie okna przeglądarki utworzone przez Selenium będą teraz używać wirtualnego wyświetlacza i będą dla Ciebie niewidoczne.
źródło
Jeśli korzystasz z systemu Windows, jedną z opcji jest uruchomienie testów na innym koncie użytkownika . Oznacza to, że przeglądarka i serwer java nie będą widoczne na Twoim koncie.
źródło
W ten sposób przeprowadzam testy z maven na pulpicie Linux (Ubuntu). Miałem dość, że nie mogłem pracować z webdriverem Firefox, który zawsze był skupiony.
Zainstalowałem xvfb
Otóż to
źródło
W wielu przypadkach PhantomJS nie będzie w pełni odpowiadał Twoim potrzebom, chciałbym omówić opcję bezgłowego chromu, o której wspomniał Dave Hunt.
chrome 57 właśnie uruchomił tę funkcję. Możesz go użyć, przekazując flagę --headless przez ChromeDriver, aby uzyskać więcej informacji, zobacz dyskusję na to pytanie
źródło
Istnieje projekt związany z PhantomJS o nazwie GhostDriver , który ma uruchamiać instancje PhantomJS w sieci Selenium za pomocą protokołu JSON webdriver wire. Prawdopodobnie właśnie tego szukasz, chociaż to pytanie ma teraz 4 lata.
źródło
W systemie MacOSX nie byłem w stanie ukryć okna przeglądarki, ale przynajmniej wymyśliłem, jak przenieść je na inny ekran, aby nie zakłócało to tak bardzo mojej pracy. Gdy Firefox przeprowadza testy, po prostu kliknij z klawiszem Control w jego ikonę w doku, wybierz Opcje i Przypisz do wyświetlacza 2.
źródło
curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh chmod +x ~/ephemeral-x.sh ~/ephemeral-x.sh TestsStarterCommand
Nawiasem mówiąc, jest to funkcja potrzebna każdemu deweloperowi obsługującemu e2e, która logicznie uruchomi przeglądarki. W środowisku programistycznym irytujące jest zajmowanie się wyskakującym oknem, z którym można przypadkowo wejść w interakcję, powodując niepowodzenie testu.
źródło
Najlepszym rozwiązaniem byłoby użycie bezgłowej przeglądarki Chrome lub możesz publikować bezpośrednio w witrynie, aby wchodzić z nią w interakcję, co pozwoliłoby zaoszczędzić dużo mocy obliczeniowej na inne rzeczy / procesy. Używam tego podczas testowania botów automatyzacji sieci, które wyszukują buty w wielu witrynach przy użyciu ciężkich elementów procesora, im więcej oszczędzasz energii i im prostszy jest twój program, tym łatwiej jest uruchamiać wiele procesów naraz z dużą szybkością i niezawodność.
źródło