Как записать на видео тесты селена без докера в докере? - PullRequest
0 голосов
/ 05 июля 2018

Я запускаю тесты python-selenium в докере, используя безголовый firefox.

Во время этих тестов я могу делать скриншоты с помощью метода селена для скриншотов, но могу ли я использовать что-то для «видеозаписи» записи виртуального дисплея в течение всего теста (несколько сценариев тестирования с несколькими методами тестирования, со многими запущенными веб-драйверами и остановлен).

Итак, как я могу записать видео на полный тестовый сеанс?

Приложение : Я нашел веб-страницу, которая точно описывает, что мне нужно: здесь . К сожалению, я получаю сообщение об ошибке, когда пытаюсь сделать запись. Вот команды, которые я делаю:

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

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Правильные шаги для записи виртуального дисплея с помощью 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
0 голосов
/ 09 июля 2018

Как указано в статье , есть пара вещей, которые нужно попробовать:

Вы можете исправить ошибку «не могу открыть дисплей», выполнив процедуру xhost:

  1. Разрешить клиентам подключаться с любого хоста с помощью xhost + Выполните следующую команду, чтобы отключить контроль доступа, с помощью которого вы можете разрешить клиентам подключаться с любого хоста.

    $ xhost + 
    access control disabled, clients can connect from any host
    
  2. Включение пересылки X11 При выполнении ssh используйте опцию -X для включения пересылки X11.

    $ ssh username@hostname -X 
    

    Включить доверенную пересылку X11, используя опцию -Y,

    $ ssh username@hostname -Y
    
  3. Открытие приложений GUI на этом хосте. После открытия ssh-соединения с удаленным хостом, как описано выше, вы можете открыть любое приложение GUI, которое откроет его без каких-либо проблем.

    Если вы по-прежнему получаете сообщение об ошибке «Не удается открыть дисплей», установите переменную DISPLAY, как показано ниже.

    $ export DISPLAY='IP:0.0' 
    

    Примечание: IP - это 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.

...