airtest进行脚本编写,偶尔存在无法识别到图片,就需要再重新截图识别了,但是之前截取的图片并不会自动删除,编写了大量的脚本后,会存在很多无法匹配到的图片,本脚本主要进行的就是这些无法识别的错误图片的删除处理!
思路:
1.获取脚本路径(.air脚本)
2.获取脚本名称(.py脚本)
3.获取python脚本中出现的所有图片名称并去重
4.获取air目录下的所有png结尾的图片
5.判断第4步获取的图片名称在第4步中是否存在,不存在的就执行删除操作
# handle_test.py
import re
import os
### 脚本位置(需要修改的仅此一行)
path_pre = "../test_case/chexiaotong/车效通无效状态页面.air"
# 获取py结尾的脚本名称
test_name = os.path.split(path_pre)[-1][:-4] # 获取最后一层路径,并去掉.air结尾
print(test_name)
# 删除
def delete_image(filename):
try:
os.remove(filename)
print("图片删除成功!")
except FileNotFoundError: # 处理文件不存在的异常
print("图片不存在!")
except PermissionError: # 处理权限不足的异常
print("无权限删除图片!")
# 获取目录下所有带png结尾结构的文件
def getfiles(input_path):
filenames = os.listdir(input_path)
# print(filenames)
filenames_png = []
for filename in filenames:
if filename.endswith('.png'):
filenames_png.append(filename)
print(len(filenames_png))
print(filenames_png)
return filenames_png
# path_list = []
# for filename in filenames:
# a = os.path.join(input_path, filename)
# print(a)
# path_list.append(a)
# print(path_list)
# 获取脚本中需要用到的图片并进行去重处理
def search_photo():
with open(path_pre + '/%s.py' % test_name, 'rb') as f:
data = f.read().decode(encoding="UTF-8")
# print(str(data))
res = re.findall('"(.*?)",', str(data))
need_res = set(res) # 去重
print(len(need_res))
print(need_res)
return res
def execute():
need_photo = search_photo()
all_photo = getfiles(path_pre)
nonessential_photo = []
for i in all_photo:
if i in need_photo:
pass
else:
filename = path_pre + '/%s' % i
delete_image(filename)
nonessential_photo.append(i)
print(len(nonessential_photo))
print(nonessential_photo)
if __name__ == '__main__':
execute()