我正在使用无头firefox在docker内部运行python-selenium测试。
在这些测试过程中,我可以使用selenium方法来制作屏幕快照,但是我可以在整个测试过程中使用某些东西来“视频”记录虚拟显示(一些测试脚本具有多种测试方法,并且启动了许多网络驱动程序,停止)。
那我如何录制完整的测试会话?
附录:我找到了一个网页,该网页准确地描述了我的需求:here。不幸的是,当我尝试进行录制时出现错误。这是我正在执行的命令:
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
答案 0 :(得分:7)
使用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
答案 1 :(得分:0)
article提供了一些尝试方法:
您可以按照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
其中主机名是网络主机名,根据需要用域名限定(或直接使用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
。