如何在 Xvfb 中运行 Selenium:克服“无法打开显示”错误
Xvfb(X 虚拟帧缓冲区)提供了一个虚拟显示器,允许在无头环境中执行图形应用程序,例如缺少 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 测试,确保您的测试可以在任何环境下成功执行。
以上是如何在无头环境中运行 Selenium:克服'无法打开显示”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!