当前位置:首页 > 文章中心

PyVirtualDisplay,一个虚拟显示利器 Python 库!

VirtualDisplay2年前 (2025-01-16)文章中心11

PyVirtualDisplay,一个虚拟显示利器 Python 库!

在服务器跑自动化脚本时,没有显示器可真是个烦心事。PyVirtualDisplay就是专门解决这个问题的,它能在没有实际显示器的情况下创建一个虚拟显示器。这就像变魔术一样,明明没有显示器,程序照样能跑图形界面!

基础使用:创建虚拟显示器

先来看看最基本的用法,创建一个虚拟显示器:

from pyvirtualdisplay import Display
import time

display = Display(visible=0, size=(800, 600))
display.start()

# 这里放你的图形界面代码
time.sleep(5)  # 假装在做些事情

display.stop()

温馨提示:运行前记得先安装Xvfb:sudo apt-get install xvfb(Linux系统),Windows用户可以跳过这步。

配合Selenium:无头浏览器自动化

这玩意儿跟Selenium简直是天生一对:

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(1920, 1080))
display.start()

driver = webdriver.Firefox()
driver.get('https://www.python.org')
print(driver.title)
driver.save_screenshot('python_org.png')

driver.quit()
display.stop()

看,这下没显示器也能截图了,简直美滋滋!

处理不同分辨率:自定义显示器大小

有时候需要测试不同分辨率下的效果:

from pyvirtualdisplay import Display
from selenium import webdriver

resolutions = [(800, 600), (1024, 768), (1920, 1080)]

for width, height in resolutions:
    display = Display(visible=0, size=(width, height))
    display.start()
    
    driver = webdriver.Firefox()
    driver.get('https://www.python.org')
    driver.save_screenshot(f'screenshot_{width}x{height}.png')
    
    driver.quit()
    display.stop()

录制屏幕:捕捉操作过程

还能录制虚拟显示器上发生的一切:

from pyvirtualdisplay.display import Display
from pyvirtualdisplay.xauth import Xauth
import time
import os

display = Display(visible=0, size=(800, 600))
display.start()

# 开始录制
os.system(f'ffmpeg -f x11grab -video_size 800x600 -i :{display.display} output.mp4 &')

# 假装做些操作
time.sleep(10)

# 停止录制
os.system('pkill ffmpeg')
display.stop()

温馨提示:录屏功能需要安装ffmpeg,别忘了先装上:sudo apt-get install ffmpeg

错误处理:优雅地处理异常

写代码不能太任性,该处理的异常得处理:

from pyvirtualdisplay import Display
import sys

try:
    display = Display(visible=0, size=(800, 600))
    display.start()
    # 你的代码
except Exception as e:
    print(f"啊呀,出错了:{e}")
    sys.exit(1)
finally:
    if 'display' in locals():
        display.stop()

PyVirtualDisplay这么好用,不过也有些小坑得注意:

1、内存管理很重要:
用完记得及时关闭,不然内存哗哗往外流。

2、权限问题要注意:
Linux下可能需要sudo权限,不然会报错。

3、截图和录屏的存储:
记得检查磁盘空间,别一不小心把硬盘写满了。

在服务器上跑自动化测试、爬虫什么的,PyVirtualDisplay绝对是个好帮手。不过用之前最好先在本地测试下,确保代码没问题再丢服务器上跑。要是遇到显示相关的问题,十有八九是环境配置的锅,多看看报错信息,一般都能解决。