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
我不建议使用卡斯特罗。它真的已经过时了,我已经尝试在自己的测试中使用它并且确实可以运行它,但是它太不稳定了。
我目前正在将ffmpeg与screen-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)
| 归档时间: |
|
| 查看次数: |
4048 次 |
| 最近记录: |