Wir erwägen, unseren Produktionsserver von Ubuntu- Desktop 10.04 auf Ubuntu- Server 12.04 zu aktualisieren .
Auf unserem aktuellen Desktop-Betriebssystem werden verschiedene Dienste ausgeführt, z. B. Selenium Web Driver. Meine Frage ist, ob der Selenium Web Driver von einem Cli-basierten System aus ausgeführt werden kann.
Mein unmittelbarer Gedanke ist, dass dies nicht möglich ist, da es auf Firefox beruht, aber ich möchte, dass jemand mir das Gegenteil beweist!
Antworten:
Was Sie suchen, ist ein Headless-Browser.
Ja, es ist möglich, Selenium auf Firefox kopflos auszuführen. Hier ist ein Beitrag, dem du folgen kannst.
Hier sind die zusammenfassenden Schritte zum Einrichten von Xvfb
quelle
Xvfb
und nicht zum Installieren und Konfigurieren von Selen (für dasgeckodriver
der Pfad erforderlich ist ).subprocess.Popen('Xvfb...')
oderos.system('Xvfb...')
machen können , aber stellen Sie sicher, dass Sie es tun, bevor Sie den Webdriver importieren.Chrome hat jetzt einen Headless-Modus:
quelle
Ja. Sie können
HTMLUnitDriver
stattdessen für dasFirefoxDriver
Starten von Webdriver verwenden. Dies ist ein Headless-Browser-Setup. Details finden Sie hier .quelle
Wenn Sie eine Headless-Browser-Unterstützung wünschen, können Sie einen anderen Ansatz wählen.
https://github.com/detro/ghostdriver
Es wurde während der Selenium-Konferenz angekündigt und befindet sich noch in der Entwicklung. Es verwendet PhantomJS als Browser und ist viel besser als HTMLUnitDriver. Es gibt noch keine Screenshots, aber es befindet sich noch in der aktiven Entwicklung.
quelle
Eine optionale Verwendung ist
pyvirtualdisplay
wie folgt :Eine kürzere Version ist:
Dies ist im Allgemeinen eine Python-Kapselung
xvfb
und irgendwie praktischer.Übrigens, obwohl
PhantomJS
es sich um einen kopflosen Browser handelt und kein Fenster geöffnet wird, wenn Sie ihn verwenden, scheint es, dass SiePhantomJS
immer noch eine GUI-Umgebung benötigen, um zu funktionieren.Ich habe den Fehlercode -6 erhalten, wenn ich ihn
PhantomJS()
anstelle desFirefox()
Headless-Modus (Kitt-Konsole) verwende. In der Desktop-Umgebung ist jedoch alles in Ordnung.quelle
UPDATE: Sie benötigen XVFB nicht mehr, um Headfox ohne Kopf auszuführen. Firefox v55 + unter Linux und Firefox v56 + unter Windows / Mac unterstützen jetzt die kopflose Ausführung.
Ich habe hier einige Anleitungen zur Verwendung hinzugefügt:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
quelle
Eine weitere Option ist GhostDriver, der jetzt offiziell von WebDriver unterstützt wird: Ghostdriver tatsächliche Leistungssteigerung
quelle
Beachten Sie, dass der HtmlUnitDriver-Webclient Single-Threaded ist und Ghostdriver nur 40% der Funktionen eines WebDrivers bietet.
Trotzdem läuft Ghostdriver für Tests ordnungsgemäß und ich habe Probleme, es mit dem WebDriver-Hub zu verbinden.
quelle
Ja, Sie können Testskripte ohne Browser ausführen. Sie sollten sie jedoch im Headless-Modus ausführen.
quelle
Möglicherweise müssen Sie Ihre Fenstergröße festlegen. so wie:
Wenn dies auch nicht funktioniert, versuchen Sie, die Fenstergröße zu vergrößern.
quelle
Installieren und Ausführen von containerisiertem Firefox:
Verbinden Sie mit
webdriver.Remote
:quelle