Selenium-Ausführung in Xvfb
Das Ausführen von Selenium-Tests auf einer EC2-Instanz ohne GUI erfordert die Verwendung von Xvfb zum Erstellen eines virtuellen Framebuffers.
Problemidentifizierung:
Trotz der Installation von Selenium und Xvfb führt das Starten eines Firefox-Browsers mit Selenium zu der Fehlermeldung „Anzeige kann nicht geöffnet werden: :0.“
Lösung: Verwendung von PyVirtualDisplay
Um dieses Problem zu beheben, können Sie PyVirtualDisplay verwenden, einen Python-Wrapper für Xvfb, mit dem Sie Headless-WebDriver-Tests ausführen können.
Hier ist ein Python-Skript das diesen Ansatz demonstriert:
from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(800, 600)) display.start() # Now Firefox will operate in a virtual display, making it headless. browser = webdriver.Firefox() browser.get('http://www.google.com') print(browser.title) browser.quit() display.stop()
Zusätzliche Optionen
Sie können auch xvfbwrapper verwenden, ein alternatives Modul, das keine externen Abhängigkeiten erfordert:
from xvfbwrapper import Xvfb vdisplay = Xvfb() vdisplay.start() # Launch processes within the virtual display here vdisplay.stop()
Oder verwenden Sie für eine verbesserte Codestruktur xvfbwrapper als Kontextmanager:
from xvfbwrapper import Xvfb with Xvfb() as xvfb: # Launch processes within the virtual display within this code block. # xvfb starts and stops automatically.
Das obige ist der detaillierte Inhalt vonWie führe ich Selenium-Tests kopflos auf EC2-Instanzen mit Xvfb aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!