„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So führen Sie Selenium in Headless-Umgebungen aus: Überwinden Sie den Fehler „Anzeige kann nicht geöffnet werden“?

So führen Sie Selenium in Headless-Umgebungen aus: Überwinden Sie den Fehler „Anzeige kann nicht geöffnet werden“?

Veröffentlicht am 19.11.2024
Durchsuche:624

How to Run Selenium in Headless Environments: Overcoming the

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.

Neuestes Tutorial Mehr>

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