Xvfb 中的 Selenium 执行
在没有 GUI 的 EC2 实例上运行 Selenium 测试需要使用 Xvfb 创建虚拟帧缓冲区。
问题识别:
尽管安装了 Selenium 和 Xvfb,但使用 Selenium 启动 Firefox 浏览器会导致错误“无法打开显示::0”。
解决方案:利用 PyVirtualDisplay
要解决此问题,您可以利用 PyVirtualDisplay,它是 Xvfb 的 Python 包装器,它允许您运行无头 WebDriver 测试。
这是一个 Python 脚本演示了这种方法:
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()
其他选项
您还可以使用 xvfbwrapper,一个不需要外部依赖项的替代模块:
from xvfbwrapper import Xvfb vdisplay = Xvfb() vdisplay.start() # Launch processes within the virtual display here vdisplay.stop()
或者,为了改进代码结构,使用 xvfbwrapper 作为上下文管理器:
from xvfbwrapper import Xvfb with Xvfb() as xvfb: # Launch processes within the virtual display within this code block. # xvfb starts and stops automatically.
以上是如何使用 Xvfb 在 EC2 实例上无头运行 Selenium 测试?的详细内容。更多信息请关注PHP中文网其他相关文章!