xvfb、xephyr和xvnc的python包装器

PyVirtualDispla的Python项目详细描述


pyvirtualdisplay是用于XvfbXephyrXvnc

链接:

TravisCoverallsLatest VersionSupported Python versionsLicenseCode HealthDocumentation

功能:
  • python包装器
  • 支持的Python版本:2.7、3.5、3.6、3.7
  • 后端:XvfbXephyrXvnc
已知问题:
  • 仅支持少数后端选项
可能的应用:
  • 图形用户界面测试
  • 自动图形用户界面屏幕截图

基本用法

启动xephyr:

from pyvirtualdisplay import Display
xephyr=Display(visible=1, size=(320, 240)).start()

用xvfb创建xmessage的屏幕截图:

from easyprocess import EasyProcess
from pyvirtualdisplay.smartdisplay import SmartDisplay
with SmartDisplay(visible=0, bgcolor='black') as disp:
    with EasyProcess('xmessage hello'):
        img = disp.waitgrab()
img.show()

安装

一般

  • install Xvfb or Xephyr or Xvnc.

  • install pip

  • optional: pyscreenshot and PIL should be installed for ^{tt1}$ submodule

  • install the program:

    pip install pyvirtualdisplay
    

ubuntu 14.04

sudo apt-get install python-pip
sudo apt-get install xvfb xserver-xephyr vnc4server
sudo pip install pyvirtualdisplay
# optional
sudo apt-get install python-pil scrot
sudo pip install pyscreenshot
# optional for examples
sudo pip install entrypoint2

卸载

pip uninstall pyvirtualdisplay

用法

图形用户界面测试

在低分辨率上测试gnumeric

#-- include('examples/lowres.py') --#
from easyprocess import EasyProcess
from pyvirtualdisplay import Display

if __name__ == "__main__":
    # start Xephyr
    Display(visible=1, size=(320, 240)).start()
    # start Gnumeric
    EasyProcess('gnumeric').start()
#-#

图像:

_img/lowres.png

截图

在后台创建xmessage的屏幕截图:

#-- include('examples/screenshot3.py') --#
'''
using :keyword:`with` statement
'''
from easyprocess import EasyProcess
from pyvirtualdisplay.smartdisplay import SmartDisplay

if __name__ == "__main__":
    with SmartDisplay(visible=0, bgcolor='black') as disp:
        with EasyProcess('xmessage hello'):
            img = disp.waitgrab()


    img.show()
#-#

图像:

_img/screenshot3.png

vncserver

#-- include('examples/vncserver.py') --#
'''
Example for Xvnc backend
'''

from easyprocess import EasyProcess
from pyvirtualdisplay.display import Display

if __name__ == "__main__":
    with Display(backend='xvnc', rfbport=5904) as disp:
        with EasyProcess('xmessage hello') as proc:
            proc.wait()
#-#

xauth

有些程序需要一个功能性的xauthority文件。pyvirtualdisplay罐 生成一个并设置适当的环境变量 use_xauth=TrueDisplay构造函数。不过,请注意 功能需要安装xauth,否则 pyvirtualdisplay.xauth.NotFoundError已筹集。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaMaven在试图定义模块时不将EJB识别为项目的依赖项   oracle如何将Java SQL数组作为参数传递给JPA本机查询?   Java解析带有整数和字符串的文本文件   客户端的java使用。在CXF Rest客户端中重置   Java:通过ID调用类   java如何在MapBox Android SDK上使用FitBounds?   java sparkjava:从InputStream将PNG作为base64加载   初始化后JScrollPane+JTree显示的java问题   java htmlunit单个测试通过,但在测试套件中运行失败   为什么java常量声明为静态的?   安卓将值从activity传递到fragment给出错误java。lang.NullPointerException   java如何使用POI设置空白excel单元格   javascript Cordova上下左右按钮   java所需字符串“contactID”参数不存在   java NoClassDefFoundError和其他引用Google Maps Android API实用程序时出现的错误   macos用Java代码打开下载的JAR文件   java扩展RoboActivity产生ClassNotFoundException   java如何使用中断通道下载文件?(NIO)