So führen Sie Selenium in Xvfb aus: Überwinden des Fehlers „Anzeige kann nicht geöffnet werden“
Xvfb (X Virtual Framebuffer) bietet eine virtuelle Anzeige, die ermöglicht die Ausführung grafischer Anwendungen in Headless-Umgebungen, wie z. B. EC2-Instanzen ohne GUI. Dies ist für die Ausführung von Selenium-Tests auf Servern ohne grafische Benutzeroberfläche unerlässlich.
Aber auch nach der Installation von Selenium und Xvfb kann beim Versuch, Tests auszuführen, der Fehler „Fehler: Anzeige kann nicht geöffnet werden: :0“ auftreten. Dies ist darauf zurückzuführen, dass Selenium bei der Interaktion mit Webseiten auf eine grafische Anzeige angewiesen ist.
Lösung: Verwenden Sie PyVirtualDisplay oder Xvfbwrapper
Um dieses Problem zu beheben, können Sie PyVirtualDisplay oder Xvfbwrapper verwenden , die Xvfb als Python-Module kapseln. Diese Module simulieren eine virtuelle Anzeige, sodass Selenium in Headless-Umgebungen ausgeführt werden kann:
Option 1: PyVirtualDisplay
from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(800, 600)) display.start() browser = webdriver.Firefox() browser.get('http://www.google.com') print(browser.title) browser.quit() display.stop()
Option 2: Xvfbwrapper
from xvfbwrapper import Xvfb vdisplay = Xvfb() vdisplay.start() browser = webdriver.Firefox() browser.get('http://www.google.com') print(browser.title) browser.quit() vdisplay.stop()
Sie können auch einen Kontextmanager verwenden, um den Prozess zu vereinfachen:
from xvfbwrapper import Xvfb with Xvfb() as xvfb: # Launch stuff inside virtual display here. # It starts/stops in this code block.
Durch die Verwendung dieser Module können Sie Selenium-Tests effektiv auf Headless-Servern ohne grafische Benutzeroberfläche ausführen und so sicherstellen, dass Ihre Tests in jeder Umgebung erfolgreich ausgeführt werden können.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3