asp网站建设项目实训,徐州网站建设一薇,wordpress建立一个页面模板,北京网站设计 培训由于UI层自动化的不稳定性#xff0c;经常会遇到执行中断或用例失败的问题#xff0c;以下是一些常见的措施。
1.详细的日志 2.定位出错时截图 3.Pytest的缓存机制(可以记录成功了哪些失败了哪些) 4.自动重试机制(如pytest-rerunfailures) 5.用例录像
用例录像是最直观的一…
由于UI层自动化的不稳定性经常会遇到执行中断或用例失败的问题以下是一些常见的措施。
1.详细的日志 2.定位出错时截图 3.Pytest的缓存机制(可以记录成功了哪些失败了哪些) 4.自动重试机制(如pytest-rerunfailures) 5.用例录像
用例录像是最直观的一种方式可以查看到实时的操作情况。很多云平台如Saucelabs等都提供了用例录像的功能。 然而很遗憾selenium本身没有这种能力。除了借助三方软件如ffmpeg同步录屏外另外一种实现方法是另外启动一个线程不断截图最后将图片拼接成git。 操作方法如下。
实时截图
1.编写一个循环截图函数shot
def shot(dr): i 0 while True: img_file os.path.join(img_dir, f{i}.png) try: dr.save_screenshot(img_file) except: return i 1 由于webdriver接口执行截图命令的速度限制每一轮截图无需再sleep。
2.操作web时启动一个线程
img_dir img # 临时图片目录 dr webdriver.Chrome()
t threading.Thread(targetshot, args(dr, img_dir)) # 新建线程 t.start() # 启动截图线程
dr.get(https://www.baidu.com) dr.find_element(id, kw).send_keys(简书 韩志超) dr.find_element(id, su).click() time.sleep(1) dr.get(https://www.qq.com) dr.back() time.sleep(2) dr.quit()
3.图片拼接成gif
需要安装pillow: pip install pillow
img_list os.listdir(img_dir) # 列出目录所有图片 img_list.sort(keylambda x: int(x[:-4])) # 排序
first_img Image.open(os.path.join(img_dir, img_list[0])) # 第一张图片对象 else_imgs [Image.open(os.path.join(img_dir, img)) for img in img_list[1:]] # 剩余图片对象
first_img.save(record.gif, append_imageselse_imgs, duration300, save_allTrue) # 拼接保存
完整代码
from selenium import webdriver import threading import os import time from PIL import Image def clear_dir(path): 创建或清空目录 if not os.path.isdir(path): os.mkdir(path) # 创建目录 else: # 清空目录 [os.remove(os.path.join(path, file_name)) for file_name in os.listdir(path)] def shot(dr, img_dir): 循环截图函数 i 0 clear_dir(img_dir) # 清空目录 while True: img_file os.path.join(img_dir, f{i}.png) try: dr.save_screenshot(img_file) except: return i 1 # Selenium操作 img_dir img # 临时图片目录 dr webdriver.Chrome()
t threading.Thread(targetshot, args(dr, img_dir)) # 新建线程 t.start() # 启动截图线程
dr.get(https://www.baidu.com) dr.find_element(id, kw).send_keys(简书 韩志超) dr.find_element(id, su).click() time.sleep(1) dr.get(https://www.qq.com) dr.back() time.sleep(2) dr.quit()
# 图片拼接成gif img_list os.listdir(img_dir) # 列出目录所有图片 img_list.sort(keylambda x: int(x[:-4])) # 排序
first_img Image.open(os.path.join(img_dir, img_list[0])) # 第一张图片对象 else_imgs [Image.open(os.path.join(img_dir, img)) for img in img_list[1:]] # 剩余图片对象
first_img.save(record.gif, append_imageselse_imgs, duration300, # 每张图片的过过渡时间 save_allTrue) # 拼接保存如果想要循环播放可以加上loop0