如何在 windows x64 上的 python 中记录 selenium webdriver 测试执行

roc*_*cky 1 python selenium automated-tests

使用 python 绑定 selenium3 webdriver 进行测试自动化,使用 castro 记录执行步骤,但它在 Windows 7 x64 上失败。

是否有任何其他库或模块可用于录制目的

用卡斯特罗编码

from castro import Castro
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

def my_video_record():
    castroObject = Castro(filename="video/mytest.swf")
    castroObject.start()
    firefoxDriver = webdriver.Firefox(executable_path="firefox_geckodriver64bit/geckodriver")
    firefoxDriver.get("https://www.python.org")
    assert "Python" in firefoxDriver.title
    sleep(1)
    firefoxDriver.quit()
    castroObject.stop()

if __name__ == '__main__':
    my_video_record()
Run Code Online (Sandbox Code Playgroud)

但它在我的 Windows7 x64 上引发错误

Socket error: [Errno 10061] No connection could be made because the target machine actively refused it
Process Process-1:
Traceback (most recent call last):
  File "D:\Python27\lib\multiprocessing\process.py", line 258, in _bootstrap
    self.run()
  File "D:\Python27\lib\multiprocessing\process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "D:\Python27\lib\site-packages\castro\lib\pyvnc2swf\vnc2swf.py", line 611, in main
    merge=merge, debug=debug, reconnect=reconnect)
  File "D:\Python27\lib\site-packages\castro\lib\pyvnc2swf\vnc2swf.py", line 429, in vnc2swf
    client.loop()
  File "D:\Python27\lib\site-packages\castro\lib\pyvnc2swf\rfb.py", line 489, in loop
    if not self.loop1(): break
  File "D:\Python27\lib\site-packages\castro\lib\pyvnc2swf\rfb.py", line 276, in loop1
    self.request_update()
  File "D:\Python27\lib\site-packages\castro\lib\pyvnc2swf\rfb.py", line 551, in request_update
    self.send('\x03\x01' + pack('>HHHH', *self.clipping))
AttributeError: RFBNetworkClient instance has no attribute 'clipping'
Run Code Online (Sandbox Code Playgroud)

小智 5

我不建议使用卡斯特罗。它真的已经过时了,我已经尝试在自己的测试中使用它并且确实可以运行它,但是它太不稳定了。

我目前正在将ffmpegscreen-capture-recorder(屏幕录制软件)一起使用,它的作用就像一个魅力。它允许您设置帧率、分辨率、比特率以及选择不同的视频编解码器。

代码如下所示:

from subprocess import Popen
from subprocess import call

cmd = 'ffmpeg -y -rtbufsize 2000M -f dshow  -i video="screen-capture-recorder" -s 1920x1080 -b:v 512k -r 20 -vcodec libx264 test.avi'

def terminate(process):
    if process.poll() is None:
        call('taskkill /F /T /PID ' + str(process.pid))

videoRecording = Popen(cmd) # start recording

terminate(videoRecording)   # terminates recording
Run Code Online (Sandbox Code Playgroud)