#java #selenium #selenium_webdriver
На сайте есть анимационный блок, анимация которого производится с применением html5, css, и js. Можно ли как то записать эту анимацию в gif? Использую selenium и метод getScreenshotAs. Изначально задумка была такая: наделать кучу скриншотов, а потом слепить их в gif файл, но проблема в том, что через метод getScreenshotAs скриншот делается очень долго(350-400мс), поэтому нет никакой плавности(получается 3-4 кадра в секунду, а то и меньше). Вопрос в следующем, можно ли решить как то эту проблему, если нельзя, то может есть какой то другой способ? Варианты с записью экрана не подойдут, потому что это все будет делаться на сервере, без gui.
Ответы
Ответ 1
Можно отрисовывать Selenium на виртуальный фреймбуфер Xvfb и записывать видео, например, через ffmpeg. Запускаете сервер Xvfb, а в нём браузер: xvfb-run --listen-tcp --server-num=123 --auth-file /tmp/xvfb.auth -e /dev/stdout -s "-ac -screen 0 1024x768x24" firefox ru.stackoverflow.com 123 - номер дисплея xserver на ваш выбор /tmp/xvfb.auth - путь, по которому будет сохранены авторизационные данные 1024x768x24 - желаемая геометрия фреймбуфера firefox ru.stackoverflow.com - открывает этот сайт в Firefox; замените на вашу строку запуска Selenium Чтобы начать писать видео: ffmpeg -f x11grab -i :123 -video_size 1024x768 -codec:v libx264 -r 12 video.mp4 -f x11grab -i :123 - источник видеопотока: xserver, 123й дисплей -video_size 1024x768 - разрешение видеофайла libx264 - желаемый видеокодек -r 12 - частота кадров Для gif-файла кодек указыать не нужно: ffmpeg -f x11grab -video_size 1024x768 -i :123 -r 12 1.gif Чтобы снять скриншот (требуется установленный ImageMagick): xwd -display :123 -root | convert xwd:/dev/stdin png:1.png -display :123 - все тот же 123й дисплей -root - не имеет отношения к пользователю root; указывает, что нужен скриншот всего рабочего стола, а не конкретного окна
Комментариев нет:
Отправить комментарий