Python 如何视频记录在docker中无头运行的selenium测试?

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

我正在使用无头firefox在docker中运行python selenium测试

在这些测试期间,我能够使用selenium方法制作屏幕截图,但是我可以使用一些东西来“视频”记录整个测试期间的虚拟显示(使用多种测试方法的多种测试脚本,启动和停止了许多WebDriver)

那么,我如何录制完整的测试会话

附录:我发现了一个网页,它准确地描述了我需要的内容:。不幸的是,我尝试录制时出错。以下是我正在执行的命令:

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+从任何主机连接执行以下命令以禁用访问控制,通过该命令可以允许客户端从任何主机连接

    $ xhost + 
    access control disabled, clients can connect from any host
    
  • 在执行ssh时启用X11转发使用选项-X启用X11转发

    $ ssh username@hostname -X 
    
    通过使用-Y选项启用受信任的X11转发

    $ ssh username@hostname -Y
    
  • 打开该主机中的GUI应用程序如上所述,在打开到远程主机的ssh连接后,您可以打开任何GUI应用程序,该应用程序将毫无问题地打开它

    如果仍然出现“无法打开显示”错误,请按如下所示设置显示变量

    $ export DISPLAY='IP:0.0' 
    
    注意:IP是您希望显示GUI应用程序的本地工作站的IP

  • 编辑:

    hostname: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