多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

使用selenium实现批量文件下载-自动化测试

更新时间:2022-03-24 09:48:38 作者:多测师 浏览:248

  背景

  实现需求:批量下载联想某型号的全部驱动程序。

  一般在做网络爬虫的时候,都是保存网页信息为主,或者下载单个文件。当涉及到多文件批量下载的时候,由于下载所需时间不定,下载的文件名不定,所以有一定的困难。

  思路

  参数配置

  在涉及下载的时候,需要先对chromedriver进行参数配置,设定默认下载目录:

使用selenium实现批量文件下载-自动化测试

  global base_path

  profile = {

  'download.default_directory': base_path

  }

  chrome_options = webdriver.ChromeOptions()

  chrome_options.add_experimental_option('prefs', profile)

  driver = webdriver.Chrome(executable_path='../common/chromedriver', options=chrome_options)

  driver.implicitly_wait(10)

  页面分析

  联想官网上每个型号的驱动下载页面前面有一个登陆的遮罩,但是实际上并不影响点击。需要注意的是:

  驱动列表,需要点击才可以显示具体的下载项目表格,否则可以找到对应元素但无法获取正确的信息

  driver_list.find_element_by_class_name('download-center_list_t_icon').click()

  每个下载列表的表头建议做跳过处理

  if sub_list.find_element_by_class_name('download-center_usblist_td01').text == '驱动名称':

  continue

  下载处理

  在页面中,找到“普通下载”的元素,点击即可下载。最终实现结果是我们希望根据网页的列表进行重命名和重新归档到文件夹,但是我们会发现如下几个问题:

  下载过来的文件名无法控制。

  依次下载的话,我们无法确认需要下载多久。并行下载的话,无法有效的区分重命名。

  在网上找了很久,也没找到在下载时直接重命名的方法,所以最终选择依次下载,当每次下载完成后进行重命名和归档,思路如下:

  对每个驱动目录,先新建一个文件夹,如:主板

  点击下载后开始下载文件

  通过os模块,找到下载目录中所有文件,并按创建时间排序,找到最新创建的文件

  由于未完成的文件后缀为.crdownload(chrome),那么根据后缀来判断是否已完成下载,未完成的话继续等待。

  待下载完成,将文件重命名并剪切到开始建立的归档目录。这里需要注意的是,有些文件名中不能存在/符号,否则会导致重命名失败,需要做一下替换。

  在后期测试的时候,发现还有几个坑需要注意:

  在查找最新创建的文件时,需要注意.DS_Store文件的处理。(Mac系统,Windows则需要考虑thumbs.db)

  需要判断一下最新创建的文件是否为文件夹,可以通过filter函数来处理

  最新文件的排序查找实现如下:

  def sort_file():

  # 排序文件

  dir_link = base_path

  dir_lists = list(filter(check_file, os.listdir(dir_link)))

  if len(dir_lists) == 0:

  return ''

  else:

  dir_lists.sort(key=lambda fn: os.path.getmtime(dir_link + os.sep + fn))

  return os.path.join(base_path, dir_lists[-1])

  def check_file(filename):

  # 忽略系统文件

  if filename == '.DS_Store' or filename == 'thumbs.db':

  return False

  global base_path

  # 排除文件夹

  return os.path.isfile(os.path.join(base_path, filename))

  以上内容为大家介绍了自动化测试中的使用selenium实现批量文件下载,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部