web-dev-qa-db-de.com

Kann der Browser in Selenium RC ausgeblendet werden?

Ich verwende Selenium RC, um einige Browseroperationen zu automatisieren, aber ich möchte, dass der Browser unsichtbar ist. Ist das möglich? Wie? Was ist mit dem Selen-Gitter? Kann ich das Selenium RC-Fenster auch ausblenden?

88
Yatendra Goel

Es gibt einige Möglichkeiten:

  • Sie können Selenium Grid verwenden, um den Browser auf einem völlig anderen Computer (oder einem virtuellen Computer) zu öffnen, zu dem Sie sich über VNC oder Remote Desktop Connection verbinden können, wenn Sie den Browser sehen möchten. Eine weitere Option: Wenn Sie einen Jenkins-Vordergrundprozess auf diesem Remote-Server ausführen, kann er Ihr Testprojekt auf dem Desktop ausführen.

  • Sie können Selenium unter Linux in XVFB "headless" ausführen. Ich habe es nie versucht und bezweifle, dass es die Mühe wirklich wert ist. http://www.alittlemadness.com/2008/03/05/running-Selenium-headless/

  • Sie können Selenium RC in einen Windows-Dienst einschließen. http://support.Microsoft.com/kb/137890 . Mit der Ausnahme, dass Einschränkungen für Berechtigungen in späteren Versionen von Windows den Zugriff von Selenium auf den Desktop wahrscheinlich verhindern, wie dies bei Windows 2000 der Fall ist.

  • Eine andere Option wäre die Verwendung von WebDriver HTMLUnitDriver, der keinen "echten" Browser startet. http://code.google.com/p/webdriver/ . Außerdem gibt es eine PhantomJS-Option sowie ein "headless Chrome", das Sie verwenden können.

  • Natürlich gibt es auch die Möglichkeit, einen Dienst wie SauceLabs zu nutzen, bei dem Sie Ihre Tests in der Cloud ausführen können. Nachdem Ihre Tests abgeschlossen sind, können Sie ein Video von ihnen sehen, das läuft.

85
Dave Hunt

Unter Linux können Sie WebDriver in einer virtuellen Anzeige (headless) ausführen, um den Browser auszublenden. Dies kann mit Xvfb (X Virtual Framebuffer) durchgeführt werden.

Sie können Xvfb direkt über den Python-Code mit xvfbwrapper: https://github.com/cgoldberg/xvfbwrapper steuern.

Python-Code für das headless-Laufen würde folgendermaßen aussehen:

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()

Installieren Sie Abhängigkeiten unter Debian/Ubuntu:

$ Sudo apt-get install xvfb
$ pip install xvfbwrapper
57
Corey Goldberg

Es gelang mir leicht, das Browserfenster auszublenden.

Einfach PhantomJS installieren . Dann ändern Sie diese Zeile:

driver = webdriver.Firefox()

zu:

driver = webdriver.PhantomJS()

Der Rest Ihres Codes muss nicht geändert werden und kein Browser wird geöffnet. Verwenden Sie zum Debuggen driver.save_screenshot('screen.png') in verschiedenen Schritten Ihres Codes.

20

+1 für Selenium RC als Windows-Dienst.

Damit die Tests vollständig ausgeblendet werden, gibt es meiner Meinung nach nicht viele Lösungen, wenn Sie unter Windows sind. 

Was würde ich tun, um einen Computer in Ihrem LAN so zu nutzen, dass er ständig online ist und einen Selenium RC-Server ausgeführt wird. Sie verwenden also die IP dieses Computers anstelle von localhost, um Ihre Tests auszuführen. Zum Beispiel:

browser = Selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(wenn man bedenkt, dass dies die IP des Computers ist, auf dem der Server läuft).

Nach diesem Setup führen Sie Ihre Tests auf Ihrem Computer aus. Die Browser und das RC-Server-Fenster befinden sich auf einem anderen Computer. Sobald Sie dies getan haben, kehren Sie zu Ihrem zurück.

13
Santi

Unter Linux können Sie Ihren Testbrowser auf einem virtuellen Display ausführen. Sie benötigen das Paket xvfb, um einen virtuellen X-Server zu erstellen. Auf Debian-basierten Distributionen laufen Sie einfach

Sudo apt-get install xvfb

Es gibt ein Nice-Tool ephemeral-x.sh , mit dem jeder Befehl bequem auf der virtuellen Anzeige ausgeführt werden kann. Laden Sie es herunter und machen Sie es ausführbar:

wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh

Dann können Sie es einfach zum Starten des Selenium-Servers verwenden:

./ephemeral-x.sh Java -jar Selenium-standalone.jar

Alle von Selenium erstellten Browserfenster verwenden nun die virtuelle Anzeige und sind für Sie nicht sichtbar.

12
pixelistik

Wenn Sie Windows verwenden, können Sie die Tests unter einem anderen Benutzerkonto ausführenDies bedeutet, dass der Browser und der Java-Server für Ihr eigenes Konto nicht sichtbar sind.

4
Igor Brejc

So führe ich meine Tests mit maven auf einem Linux-Desktop (Ubuntu) durch. Ich hatte es satt, nicht mehr mit dem Firefox-Web-Treiber arbeiten zu können, der immer den Fokus nahm.

Ich habe xvfb installiert 

xvfb-run -a mvn sauber installieren

Das ist es

3
Paul Whelan

In vielen Fällen wird PhantomJS Ihre Anforderungen nicht vollständig erfüllen. Ich möchte auf die Option "Headless Chrome" eingehen, die in der Antwort von Dave Hunt erwähnt wird. 

chrome 57 hat diese Funktion gerade gestartet. Sie können es verwenden, indem Sie das Flag --headless über ChromeDriver übergeben. Weitere Informationen finden Sie in der Diskussion unter dieser Frage

1
Marlies

Die Verwendung von kopflosem Chrome ist die beste Wahl, oder Sie können direkt auf der Website Beiträge veröffentlichen, um mit der Website zu interagieren. Dies würde eine Menge Rechenleistung für andere Dinge/Prozesse einsparen. Ich benutze dies, wenn ich Web-Automatisierungs-Bots teste, die mit CPU-lastigen Elementen auf mehreren Websites nach Schuhen suchen. Je mehr Strom Sie sparen und je einfacher Ihr Programm ist, desto einfacher ist es, mehrere Prozesse gleichzeitig mit einer höheren Geschwindigkeit und Geschwindigkeit auszuführen Zuverlässigkeit.

0
LiamººT
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

Übrigens ist dies eine Funktion, die von jedem Entwickler von e2e benötigt wird, der logisch Browser hervorbringt. In einer Entwicklungsumgebung ist es ärgerlich, sich mit dem Fenster zu beschäftigen, das immer wieder auftaucht und mit dem Sie versehentlich interagieren können, wenn der Test fehlschlägt.

0
Nestor Urquiza

Es gibt ein mit PhantomJS verwandtes Projekt namens GhostDriver , das PhantomJS-Instanzen in einem Selenium-Grid mit dem JSON-Protokoll des Webdriver-Kabels ausführen soll. Das ist wahrscheinlich das, wonach Sie suchen, obwohl diese Frage jetzt 4 Jahre alt ist.

0
djangofan

Unter MacOSX konnte ich das Browserfenster nicht ausblenden, aber ich habe zumindest herausgefunden, wie ich es auf eine andere Anzeige verschieben kann, damit es meinen Workflow nicht so sehr stört. Während Firefox Tests ausführt, klicken Sie einfach mit der rechten Maustaste auf das Symbol im Dock, wählen Sie Optionen und Zur Anzeige zuweisen. 2.

0
chetstone