Maison  >  Article  >  développement back-end  >  Comment exécuter des tests Selenium sans tête sur des instances EC2 à l'aide de Xvfb ?

Comment exécuter des tests Selenium sans tête sur des instances EC2 à l'aide de Xvfb ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-17 05:12:03146parcourir

How to Run Selenium Tests Headlessly on EC2 Instances Using Xvfb?

Exécution de Selenium dans Xvfb

L'exécution de tests Selenium sur une instance EC2 sans interface graphique nécessite l'utilisation de Xvfb pour créer un framebuffer virtuel.

Identification du problème :

Malgré l'installation de Selenium et Xvfb, le lancement d'un navigateur Firefox à l'aide de Selenium entraîne l'erreur "Impossible d'ouvrir l'affichage : 0."

Solution : Utiliser PyVirtualDisplay

Pour résoudre ce problème, vous pouvez utiliser PyVirtualDisplay, un wrapper Python pour Xvfb, qui vous permet d'exécuter des tests WebDriver sans tête.

Voici un script Python qui démontre cette approche :

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()

Options supplémentaires

Vous pouvez également utiliser xvfbwrapper, un module alternatif qui ne nécessite aucune dépendance externe :

from xvfbwrapper import Xvfb

vdisplay = Xvfb()
vdisplay.start()

# Launch processes within the virtual display here

vdisplay.stop()

Ou, pour une structure de code améliorée, utilisez xvfbwrapper comme gestionnaire de contexte :

from xvfbwrapper import Xvfb

with Xvfb() as xvfb:
    # Launch processes within the virtual display within this code block.
    # xvfb starts and stops automatically.

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:
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