我正在使用无头火狐在码头工人中运行python-selenium测试。
在这些测试中,我能够使用 selenium 方法制作屏幕截图 - 但我可以使用一些东西在整个测试期间"视频"记录虚拟显示(几个测试脚本和几种测试方法,许多 Web 驱动程序启动和停止(。
那么,如何对完整的测试会话进行视频录制呢?
附录:我找到了一个网页,准确地描述了我需要的东西:这里。不幸的是,当我尝试进行录制时,我遇到了错误。以下是我正在执行的命令:
xvfb-run --listen-tcp --server-num 44 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" python seltest.py &
ffmpeg -f x11grab -video_size 1920x1080 -i 127.0.0.1:44 -codec:v libx264 -r 12 /tmp/behat_1.mp4
错误是(对于第二个命令(:
[x11grab @ 0x1d289c0] Cannot open display 127.0.0.1:44, error 1.
127.0.0.1:44: Input/output error
使用ffmpeg
录制虚拟显示的正确步骤是:
xvfb-run --listen-tcp --server-num 44 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" python seltest.py &
export DISPLAY=:44
ffmpeg -f x11grab -video_size 1920x1080 -i :44 -codec:v libx264 -r 12 video.mp4
如本文所述,有几件事可以尝试:
您可以按照 xhost 过程修复"无法打开显示"错误:
-
允许客户端使用 xhost+ 从任何主机进行连接 执行以下命令以禁用访问控制,通过该控制,您可以允许客户端从任何主机进行连接。
$ xhost + access control disabled, clients can connect from any host
-
启用 X11 转发 执行 ssh 时,使用选项 -X 启用 X11 转发。
$ ssh username@hostname -X
通过使用 -Y 选项启用受信任的 X11 转发,
$ ssh username@hostname -Y
-
在该主机中打开 GUI 应用程序 如上所述打开与远程主机的 ssh 连接后,您可以打开任何 GUI 应用程序,该应用程序将毫无问题地打开它。
如果仍然收到"无法打开显示"错误,请按如下所示设置 DISPLAY 变量。
$ export DISPLAY='IP:0.0'
注:IP 是要在其中显示 GUI 应用程序的本地工作站的 IP。
编辑:
hostname:n.m
其中hostname是网络主机名,根据需要使用域名进行限定(或直接使用IP地址(;n是该主机上的显示编号(通常为0(;m是该主机上的屏幕编号(通常为0(。
因此,请尝试将127.0.0.1:44
替换为127.0.0.1:n.m
。如果您有多个显示器,请尝试通过传递127.0.0.1:0.0
,127.0.0.1:0.1
,127.0.0.1:1.0
来找出哪一个可以工作...
还要检查显示尺寸是否真的1920x1080
。