Python 如何视频记录在docker中无头运行的selenium测试?
我正在使用无头firefox在docker中运行python selenium测试 在这些测试期间,我能够使用selenium方法制作屏幕截图,但是我可以使用一些东西来“视频”记录整个测试期间的虚拟显示(使用多种测试方法的多种测试脚本,启动和停止了许多WebDriver) 那么,我如何录制完整的测试会话 附录:我发现了一个网页,它准确地描述了我需要的内容:。不幸的是,我尝试录制时出错。以下是我正在执行的命令:Python 如何视频记录在docker中无头运行的selenium测试?,python,selenium,ffmpeg,xvfb,pyvirtualdisplay,Python,Selenium,Ffmpeg,Xvfb,Pyvirtualdisplay,我正在使用无头firefox在docker中运行python selenium测试 在这些测试期间,我能够使用selenium方法制作屏幕截图,但是我可以使用一些东西来“视频”记录整个测试期间的虚拟显示(使用多种测试方法的多种测试脚本,启动和停止了许多WebDriver) 那么,我如何录制完整的测试会话 附录:我发现了一个网页,它准确地描述了我需要的内容:。不幸的是,我尝试录制时出错。以下是我正在执行的命令: xvfb-run --listen-tcp --server-num 44 --aut
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
错误是(对于第二个命令):
正如所提供的,有两件事可以尝试:
您可以按照xhost过程修复“无法打开显示”错误:
$ xhost +
access control disabled, clients can connect from any host
$ ssh username@hostname -X
通过使用-Y选项启用受信任的X11转发
$ ssh username@hostname -Y
$ export DISPLAY='IP:0.0'
注意:IP是您希望显示GUI应用程序的本地工作站的IPhostname:n.m
其中hostname是网络主机名,根据需要使用域名进行限定(或直接使用IP地址);n是该主机上的显示编号(通常为0);m是该主机上的屏幕编号(通常为0)
因此,尝试用127.0.0.1:n.m
替换127.0.0.1:44
。如果您有多个显示器,请通过传递127.0.0.1:0.0
,127.0.0.1:0.1
,127.0.0.1:1.0
,尝试找出哪个显示器可以工作
还要检查显示尺寸是否真的是
1920x1080
使用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
这个:?这对我不起作用。引发错误:“TypeError:fsPath.existsSync不是函数”您在第一个命令或第二个命令上收到错误?这是第二个命令(ffmpeg命令)的错误。这些建议仍然不起作用。此外,我无法尝试建议2,因为我正在同一台本地计算机上尝试该示例。我根本不使用ssh!对于建议3,我使用了
export DISPLAY='localhost:0.0'
…我无法尝试所有可能的组合。我试了一些,但没有成功。错误消息仍然无法打开显示127.0.0.1:44,错误1。127.0.0.1:44:输入/输出错误
请尝试127.0.0.1:10.0
我读过,它通常会有帮助
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