Maison > développement back-end > Tutoriel Python > Comment exécuter Selenium dans des environnements sans tête : surmonter l'erreur « Impossible d'ouvrir l'affichage » ?

Comment exécuter Selenium dans des environnements sans tête : surmonter l'erreur « Impossible d'ouvrir l'affichage » ?

Linda Hamilton
Libérer: 2024-11-15 15:29:03
original
406 Les gens l'ont consulté

How to Run Selenium in Headless Environments: Overcoming the

Comment exécuter Selenium dans Xvfb : surmonter l'erreur « Impossible d'ouvrir l'affichage »

Xvfb (X Virtual Framebuffer) fournit un affichage virtuel qui permet l'exécution d'applications graphiques dans des environnements sans tête, tels que les instances EC2 dépourvues d'interface graphique. Ceci est essentiel pour exécuter des tests Selenium sur des serveurs sans interface utilisateur graphique.

Cependant, même après avoir installé Selenium et Xvfb, vous pouvez rencontrer le message « Erreur : impossible d'ouvrir l'affichage : :0 » lorsque vous tentez d'exécuter des tests. Cela vient du fait que Selenium s'appuie sur un affichage graphique pour interagir avec les pages Web.

Solution : utilisez PyVirtualDisplay ou Xvfbwrapper

Pour résoudre ce problème, vous pouvez utiliser PyVirtualDisplay ou Xvfbwrapper. , qui encapsulent Xvfb en tant que modules Python. Ces modules simulent un affichage virtuel, permettant à Selenium de s'exécuter dans des environnements sans tête :

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()
Copier après la connexion

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()
Copier après la connexion

Vous pouvez également utiliser un gestionnaire de contexte pour simplifier le processus :

from xvfbwrapper import Xvfb

with Xvfb() as xvfb:
    # Launch stuff inside virtual display here.
    # It starts/stops in this code block.
Copier après la connexion

En utilisant ces modules, vous pouvez exécuter efficacement des tests Selenium sur des serveurs sans tête dépourvus d'interface utilisateur graphique, garantissant ainsi que vos tests peuvent s'exécuter avec succès dans n'importe quel environnement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal