用于管理xvfb会话/通过简单界面确保显示的python模块

xvfbman的Python项目详细描述


一个python模块,专注于管理xvfb会话/通过简单的界面确保显示。

为什么?

xvfb是x11虚拟帧缓冲区,基本上实现了一个没有监视器的显示,就在内存中。

这对于测试(例如与selenium结合使用)、分析或其他自动化任务非常有用。

如何

XVFBMAN模块提供了一个启动和管理XVFB会话的接口,以及提供一个公共接口,应用程序可以使用它来确保设置显示(无论是实际显示还是启动管理XVFB,该XVFB将在退出时关闭)。

确保显示

一个常见的用法是,如果已经设置了display,应用程序将使用display,否则将启动xvfb会话。

这可以通过^ {EM1} $ EnSurReDePrase和^ {EM1}$RealStaseExtCuffue来完成。

ensuredisplayepresent将检查是否设置了display环境变量,如果没有设置,则将启动xvfb会话并将display环境变量设置为匹配。

^ {EM1}$RealStaseExtCuffux将注册一个“ATEXIT”处理程序,它将确保我们打开的所有XVFB会话(如果有的话)将被关闭。

# Returns True if we setup an Xvfb, False if DISPLAY already set

if ensureDisplayPresent():

# If we setup an Xvfb, register the cleanup function

registerAtExitCleanup()

启动xvfb会话

您可以通过start xvfbstartxvfbrange

按需启动xvfb实例。

startxvfb接受一个参数servernum,该参数指定服务器(e.x.servernum=50将显示:50.0)。也可以重写“screenstr”(1280x720x24)的默认值,以指定不同的分辨率和深度。

startxvbrange接受两个参数startservernum和lastservernum以及可选的screenstr,并尝试在该包含范围内的每个服务器号/显示号上启动服务器。如果显示号码已在使用中,它将移动到下一个号码。

这将返回最终被使用的服务器编号。

如果您的应用程序可以运行多个实例,或者在任何情况下都可能发生服务器号争用,请使用此函数。

try:

# Start an Xvfb anywhere from :50 to :99 and return the one used

serverNum = startXvfbRange(50, 99)

除了按键错误:

# All servers 50-99 were in use

raise

除了错误:

# Other error occured preventing Xvfb from working properly

# (Exception message will contain the output)

正在停止xvfb会话

您可以通过stop xvfbstopAllManagedxvfbs

stop xvfb接受服务器号(整数)作为参数,并将停止在该显示器上运行的托管xvfb。

stopallmanagedxvfs将停止进程管理的所有xvfb会话

实用函数

正在使用xvfb-如果我们正在管理xvfb会话,则测试。参数的default/none将测试是否管理了any会话,或者传递一个整数将检查特定的服务器编号。

getdisplaystrforservernum-将服务器号转换为显示字符串(例如,用于display env var)

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

推荐PyPI第三方库


热门话题
java通过Spring MVC web应用程序向客户端发送文本文件   java是否可以在运行时动态实例化DAO类?   调用VB。来自Java的net函数   java在Android中通过单击打开特定文件夹   java如何使用maven pom。xml标识非标准项目结构中的testng测试用例?   java为什么FOP在大文件上崩溃?   Architecture python+flask和spring boot+java   java Kafka工具根本没有启动Ubuntu 19.10   如何使用Eclipse运行Java USB API for Windows   java如何在Eclipse中查看J2EE预览服务器/容器的日志/控制台?   网页抓取是否可以使用Java crawler crawler4j暂停和恢复抓取?   java当我第二次按下按钮时,应用程序停止工作   带有偏移量和限制的java SQLite分页问题   java如何在OSX mavericks中将端口80转发到8080   java从泛型方法调用非泛型方法   java My代码未按预期工作。十进制输出不是它应该的样子   节点。java中的js加密(jasypt)和nodejs中的解密   java乘法表不工作数组索引超出范围   java将JDBC与Firebirdsql连接起来