在x虚拟帧缓冲区(xvfb)内运行无头显示
xvfbwrapper的Python项目详细描述
manage headless displays with xvfb(x虚拟帧缓冲区)
信息:
- 开发:https://github.com/cgoldberg/xvfbwrapper
- 发布:https://pypi.python.org/pypi/xvfbwrapper
- 作者:Corey Goldberg-2012-2016
- 许可证:麻省理工学院
关于xvfbwrapper:
xvfb wrapper是一个用于控制xvfb的python包装器。
关于xvfb:
xvfb(x虚拟帧缓冲区)是一个实现x11显示服务器协议的显示服务器。它在内存中运行,不需要物理显示。只需要一个网络层。
xvfb对于在无头服务器上运行验收测试特别有用。
从pypi安装xvfbwrapper:
^{tt1}$
系统要求:
- xvfb(sudo apt-get install xvfb,或类似的)
- python 2.7或3.3+
示例
基本用法:
from xvfbwrapper import Xvfb vdisplay = Xvfb() vdisplay.start() # launch stuff inside # virtual display here. vdisplay.stop()
基本用法,指定显示几何体:
from xvfbwrapper import Xvfb vdisplay = Xvfb(width=1280, height=740, colordepth=16) vdisplay.start() # launch stuff inside # virtual display here. vdisplay.stop()
用作上下文管理器:
from xvfbwrapper import Xvfb with Xvfb() as xvfb: # launch stuff inside virtual display here. # It starts/stops around this code block.
测试示例:无头Selenium Webdriver测试:
import unittest from selenium import webdriver from xvfbwrapper import Xvfb class TestPages(unittest.TestCase): def setUp(self): self.xvfb = Xvfb(width=1280, height=720) self.addCleanup(self.xvfb.stop) self.xvfb.start() self.browser = webdriver.Firefox() self.addCleanup(self.browser.quit) def testUbuntuHomepage(self): self.browser.get('http://www.ubuntu.com') self.assertIn('Ubuntu', self.browser.title) def testGoogleHomepage(self): self.browser.get('http://www.google.com') self.assertIn('Google', self.browser.title) if __name__ == '__main__': unittest.main()
上面的测试类使用selenium和xvfbwrapper在无头显示中运行firefox的每个测试用例。
- 启动虚拟显示
- Firefox在虚拟显示器内部启动(无头)
- 运行测试时不显示浏览器
- 在每个测试用例中都断言条件
- 清理期间浏览器退出
- 清理期间虚拟显示停止
look ma',没有浏览器!
(您也可以在虚拟显示器内截图,以诊断测试失败)