Как запустить 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