如何使用Selenium WebDriver验证文件是否下载成功
Selenium WebDriver 校验目标文件下载成功的实现方法
- 第一步先固定浏览器下载路径
执行测试前先通过浏览器配置项指定下载目录,避免文件保存到默认路径导致校验失败。以Chrome为例的配置代码示例:from selenium import webdriver chrome_options = webdriver.ChromeOptions() prefs = {"download.default_directory": "/本地/指定/下载路径"} chrome_options.add_experimental_option("prefs", prefs) driver = webdriver.Chrome(options=chrome_options) - 轮询检查文件存在状态
触发下载操作后,设置合理的超时时间,循环扫描指定目录:- 排除下载过程中的临时文件,比如Chrome的
.crdownload、Firefox的.part后缀文件,这类文件存在就说明下载还在进行中 - 确认目标名称、目标后缀的文件出现在目录中,且文件大小大于0,可初步判断下载完成
- 排除下载过程中的临时文件,比如Chrome的
- 可选的完整性校验
如果对文件内容准确性要求较高,可以做二次校验:- 提前拿到目标文件的MD5、SHA256哈希值,下载完成后计算本地文件的哈希值和预期值对比,确认内容无损坏
- 没有哈希值的场景可以对比文件大小、文件后缀等公开已知的特征是否符合预期
- 重名场景的特殊处理
如果测试环境的下载目录有历史残留文件,可以在下载前先统计目录下匹配目标文件名规则的文件数量,下载后再统计一次,确认数量+1,避免把旧文件误判为本次下载的结果
注意要根据测试场景的文件大小调整超时等待时长,避免大文件还未下载完成就触发超时判错
内容的提问来源于stack exchange,提问作者Kitty
相关产品推荐
相关产品推荐

