python自动化测试,下载文件然后进行查询判断并且删除(比较准确!可用于多个重复的文件)
1、前提:近期在做python的自动化测试,下载某个文件,然后想确认下载文件是否正确,因此做了以下的处理。
2、环境:谷歌浏览器
import re
import time
import datetime
from pathlib import Path
import os
'''
使用前提:
1、需要设置长一点的等待时间,需要等文件下载完才能判断
2、随便里面有多少个同名文件 都可以进行判断了
3、以下代码不包括下载的操作。
4、需要点击下载就进行查询,此处无法进行多个文件同时查询
5、名字固定不变的文件
'''
time.sleep(1)
#谷歌的默认的下载地址
result_dir = 'C:\\Users\\Administrator\\Downloads'
list = os.listdir(result_dir)
# 重新按时间对目录下的文件进行排序 获取最新下载文件的名字
list.sort(key=lambda fn: os.path.getmtime(result_dir + "\\" + fn))
#list[-1]的这个地方需要拿的是最后一个文件,也就是时间最新的文件
file = os.path.join(result_dir, list[-1])
#这个是获取下载文件的名字,下载时候如果有相同文件 就会带上(1.2....)情况,因此用正则表达式进行去掉括号已经括号的内容
name = re.sub('\(.*?\)', "", list[-1]).strip()
result_name = re.sub('\s+', '', name).strip()
#此处是对于名字的一个判断
self.assertEqual(result_name,"xxx.xls","文字名称不正确,当前没有下载成功")
#获取文件的时间:年月日,与当前的年月日进行比较判断是不是已经下载了
time1=datetime.date.fromtimestamp(os.path.getmtime(result_dir + "\\"+list[-1]))
time2=time1.strftime('%Y%m%d')
timestr1 = time.strftime('%Y%m%d', time.localtime(time.time()))
self.assertEqual(time2,timestr1,"时间对比不正确,可能就没有下载成功噢")
#print(type(list[-1]))
try:
#删除文件
os.remove(Path(file))
except:
print("没有出现文件")