«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как запустить Selenium в безголовых средах: преодоление ошибки «Невозможно открыть дисплей»?

Как запустить Selenium в безголовых средах: преодоление ошибки «Невозможно открыть дисплей»?

Опубликовано 19 ноября 2024 г.
Просматривать:492

How to Run Selenium in Headless Environments: Overcoming the

Как запустить Selenium в Xvfb: устранение ошибки «Невозможно открыть дисплей»

Xvfb (X Virtual Framebuffer) обеспечивает виртуальный дисплей, который позволяет выполнять графические приложения в автономных средах, например в экземплярах EC2 без графического пользовательского интерфейса. Это важно для запуска тестов Selenium на серверах без графического пользовательского интерфейса.

Однако даже после установки Selenium и Xvfb вы можете столкнуться с сообщением «Ошибка: невозможно открыть дисплей: :0» при попытке запустить тесты. Это связано с тем, что Selenium использует графическое отображение для взаимодействия с веб-страницами.

Решение: используйте PyVirtualDisplay или Xvfbwrapper

Чтобы решить эту проблему, вы можете использовать PyVirtualDisplay или Xvfbwrapper , которые инкапсулируют Xvfb как модули Python. Эти модули имитируют виртуальный дисплей, позволяя Selenium работать в безголовых средах:

Вариант 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()

Вариант 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()

Вы также можете использовать контекстный менеджер, чтобы упростить процесс:

from xvfbwrapper import Xvfb

with Xvfb() as xvfb:
    # Launch stuff inside virtual display here.
    # It starts/stops in this code block.

Используя эти модули, вы можете эффективно запускать тесты Selenium на автономных серверах, на которых отсутствует графический интерфейс пользователя, гарантируя, что ваши тесты могут успешно выполняться в любой среде.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3