Ich habe eine Selentestsuite, die viele Tests ausführt, und bei jedem neuen Test wird ein Browserfenster über allen anderen geöffneten Fenstern geöffnet. Sehr nervig bei der Arbeit in einer lokalen Umgebung. Gibt es eine Möglichkeit, Selen oder dem Betriebssystem (MAC) anzuweisen, die Fenster im Hintergrund zu öffnen?
selenium
selenium-webdriver
webdriver
selenium-grid
kevzettler
quelle
quelle
driver = webdriver.Firefox()
in Ihrem Code tun , folgen Sie meiner Antwort hier: stackoverflow.com/a/23898148/1515819Antworten:
Es gibt einige Möglichkeiten, aber es ist kein einfaches "Festlegen eines Konfigurationswerts". Wenn Sie nicht in einen kopflosen Browser investieren, der nicht allen Anforderungen entspricht, ist dies ein kleiner Hack:
Wie verstecke ich das Firefox-Fenster (Selenium WebDriver)?
und
Ist es möglich, den Browser in Selenium RC auszublenden?
Sie können "angeblich" einige Parameter an Chrome übergeben, insbesondere:
--no-startup-window
Beachten Sie, dass es bei einigen Browsern, insbesondere im Internet Explorer, Ihren Tests schadet, wenn sie nicht im Fokus ausgeführt werden.
Sie können mit AutoIT auch ein bisschen hacken, um das Fenster nach dem Öffnen auszublenden.
quelle
Wenn Sie den Selenium-Webtreiber mit Python verwenden, können Sie PyVirtualDisplay verwenden, einen Python-Wrapper für Xvfb und Xephyr.
PyVirtualDisplay benötigt Xvfb als Abhängigkeit. Installieren Sie unter Ubuntu zuerst Xvfb:
Installieren Sie dann PyVirtualDisplay von Pypi:
Beispiel eines Selenium-Skripts in Python in einem kopflosen Modus mit PyVirtualDisplay:
BEARBEITEN Die erste Antwort wurde 2014 veröffentlicht und jetzt stehen wir kurz vor 2018. Wie alles andere haben auch die Browser Fortschritte gemacht. Chrome verfügt jetzt über eine vollständig kopflose Version, bei der keine Bibliotheken von Drittanbietern mehr zum Ausblenden des UI-Fensters verwendet werden müssen. Der Beispielcode lautet wie folgt:
quelle
Chrome 57 bietet die Option, das Flag --headless zu übergeben, wodurch das Fenster unsichtbar wird.
Dieses Flag unterscheidet sich vom --no-startup-Fenster, da das letzte kein Fenster startet. Es wird zum Hosten von Hintergrund-Apps verwendet, wie auf dieser Seite angegeben .
Java-Code zum Übergeben des Flags an den Selenium-Webdriver (ChromeDriver):
quelle
Wenn Sie ohne Browser arbeiten, können Sie es im Headless- Modus ausführen .
Ich zeige Ihnen ein Beispiel in Python, das gerade für mich funktioniert
Ich füge Ihnen auch ein bisschen mehr Informationen dazu auf der offiziellen Google-Website https://developers.google.com/web/updates/2017/04/headless-chrome hinzu
quelle
Seit Chrome 57 haben Sie das kopflose Argument:
Der Headless-Modus von Chrome bietet eine um 30,97% bessere Leistung als die UI-Version. Der andere Headless-Treiber PhantomJS liefert 34,92% mehr als der Headless-Modus des Chrome.
PhantomJSDriver
Der Headless-Modus von Mozilla Firefox bietet eine um 3,68% bessere Leistung als die UI-Version. Dies ist eine Enttäuschung, da der Headless-Modus von Chrome eine um> 30% bessere Zeit als der UI-Modus erzielt. Der andere Headless-Treiber PhantomJS liefert 34,92% mehr als der Headless-Modus des Chrome. Überraschenderweise schlägt der Edge-Browser alle.
Dies ist ab Firefox 57+ verfügbar
Der Headless-Modus von Mozilla Firefox bietet eine um 3,68% bessere Leistung als die UI-Version. Dies ist eine Enttäuschung, da der Headless-Modus von Chrome eine um> 30% bessere Zeit als der UI-Modus erzielt. Der andere Headless-Treiber PhantomJS liefert 34,92% mehr als der Headless-Modus des Chrome. Überraschenderweise schlägt der Edge-Browser alle.
quelle
Ich schlage vor, Phantom Js für weitere Informationen zu verwenden, die Sie benötigen, um die offizielle Phantom-Website zu besuchen
Nach dem Herunterladen von PhantomJs.exe müssen Sie in Ihr Projekt importieren, wie Sie im Bild unten sehen können. Phantomjs befindet sich in der allgemeinen >> Bibliothek >> phantomjs.exe
Jetzt müssen Sie in Ihrem Selenium-Code nur noch die Zeile ändern
Zu so etwas
Das war's, es hat bei mir funktioniert. und auf jeden Fall wird er für Sie arbeiten, Prost
quelle
Unter Windows können Sie win32gui verwenden:
Beispiel:
Bei dieser Lösung gibt es jedoch ein Problem: Wenn Sie die Methode send_keys verwenden, wird das Fenster angezeigt. Sie können damit umgehen, indem Sie Javascript verwenden, das kein Fenster anzeigt:
quelle
Ich habe diesen Code für Firefox in Windows verwendet und die Antwort erhalten: (Referenz hier )
Aber ich teste es nicht für andere Browser.
quelle
Es kann in Optionen sein. Hier ist der identische Java-Code.
quelle
Dies ist eine einfache NodeJS-Lösung, die in der neuen Version 4.x (möglicherweise auch 3.x) von Selen funktioniert.
Chrom:
Feuerfuchs:
Das Ganze läuft nur im Hintergrund. Genau das, was wir wollen.
quelle
Wenn Sie einen Chrome-Treiber verwenden, können Sie diesen sehr einfachen Code verwenden: (es hat bei mir funktioniert)
quelle
Unter * nix können Sie auch einen kopflosen X-Server wie Xvfb ausführen und die Variable DISPLAY darauf verweisen:
Gefälschter X-Server zum Testen?
quelle
Hier ist eine .net-Lösung, die für mich funktioniert hat:
Laden Sie PhantomJs hier herunter http://phantomjs.org/download.html
Kopieren Sie die EXE-Datei aus dem Ordner bin im Download und fügen Sie sie in den Ordner bin debug / release Ihres Visual Studio-Projekts ein.
Fügen Sie dies mit hinzu
Öffnen Sie in Ihrem Code den Treiber wie folgt:
quelle
Wenn Sie Ubuntu (Gnome) verwenden, besteht eine einfache Problemumgehung darin, das Auto-Move-Fenster der Gnome-Erweiterung zu installieren: https://extensions.gnome.org/extension/16/auto-move-windows/
Stellen Sie dann den Browser (z. B. Chrome) auf einen anderen Arbeitsbereich (z. B. Arbeitsbereich 2) ein. Der Browser wird stillschweigend in einem anderen Arbeitsbereich ausgeführt und stört Sie nicht mehr. Sie können Chrome weiterhin ohne Unterbrechung in Ihrem Arbeitsbereich verwenden.
quelle
Hallo, ich hatte das gleiche Problem mit meinem Chromedriver unter Verwendung von Python und options.add_argument ("headless") hat bei mir nicht funktioniert, aber dann wurde mir klar, wie ich es beheben kann, also bringe ich es in den folgenden Code
Ich hoffe es funktioniert für dich.
quelle
Eine Möglichkeit, dies zu erreichen, besteht darin, den Browser im Headless-Modus auszuführen. Ein weiterer Vorteil ist, dass Tests schneller ausgeführt werden.
Den folgenden Code finden Sie, um den Headless-Modus im Chrome-Browser einzustellen.
quelle