Я использую веб-драйвер Selenium 3 и Python 3 в Windows 7.
Я хочу записать видео о том, что происходит в моих тестах на селен.
Для этого я использую FFmpeg и устройство захвата экрана , но я могу менять программы.
Вот мой код:
import unittest
from selenium import webdriver
from subprocess import Popen
#from subprocess import call
cmd = 'ffmpeg -y -rtbufsize 2000M -f dshow -i video="screen-capture-recorder" -r 10 -t 20 screen-capture.mp4'
class SearchProductTest(unittest.TestCase):
def setUp(self):
# start the recording of movie
self.videoRecording = Popen(cmd)
# create a new Firefox session
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.driver.maximize_window()
# navigate to the application home page
self.driver.get("http://demo-store.seleniumacademy.com/")
def test_search_by_category(self):
# get the search textbox
search_field = self.driver.find_element_by_name("q")
search_field.clear()
# enter search keyword and submit
search_field.send_keys("phones")
search_field.submit()
# get all the anchor elements which have product names displayed
# currently on result page using find_elements_by_xpath method
products = self.driver.find_elements_by_xpath(
"//h2[@class='product-name']/a")
# check count of products shown in results
self.assertEqual(3, len(products))
#self.videoRecording.terminate()
def test_something_else(self):
pass
def tearDown(self):
# close the browser window
self.driver.quit()
# Stop the recording
self.videoRecording.terminate()
#def terminate(process):
#if process.poll() is None:
# call('taskkill /F /T /PID ' + str(process.pid))
if __name__ == '__main__':
unittest.main(verbosity=2)
Проблемы:
1) cmd
дает максимальное время для фильма (20 "в примере). Если тест длится больше, фильм создается, и он работает (но не завершен, только 20").
2) если тест длится меньше, файл создается, но он не работает (читатель не может прочитать его, и это всего лишь несколько байтов).Это главная ошибка!Я не уверен, где начать фильм и где (и как) его остановить.
3) Если у меня есть более одного теста, я бы хотел, чтобы для всех них был только один фильм (поэтомуЯ хочу записать все тесты в одном и том же фильме).
4) если возможно, я бы предпочел записать окно веб-драйвера (того, где выполняются мои тесты), а не мой экран, так что тесты пока идутможет делать что-то еще (они медленные).
Спасибо за помощь.