如何在 Xvfb 中运行 Selenium:克服“无法打开显示”错误
Xvfb(X Virtual Framebuffer)提供了一个虚拟显示,允许在无头环境中执行图形应用程序,例如缺少 GUI 的 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