在功能测试中测试下载文件

问题描述 投票:0回答:1

目前,我的代码使用send_data在控制器中下载数据。我需要编写一个功能测试来检查文件的下载。我正在使用 Capybara、selenium(chrome 浏览器)。有没有办法 1. 检查文件是否已下载,2. 阻止在本地下载文件夹中创建文件,例如有没有办法拦截下载并将其存储在测试文件夹中以便能够检查它?或者也许是为了捕获数据而不是实际构建的文件?谢谢您的帮助。

我创建文件的代码很简单:

send_data csv_data, type: 'text/csv; charset=utf-8; header=present', disposition: "attachment; filename=<filename>"
csv selenium-webdriver download automated-tests capybara
1个回答
0
投票

我在 UI 中用于“下载”过程测试的一般方法如下:

  1. 将驱动程序的默认下载目录设置为所需的文件夹(您案例中的一些测试文件夹(示例
  2. 下载前捕获测试文件夹中的文件数量(示例
  3. 在页面上执行所需的操作以开始下载过程
  4. 等待测试目录中的文件数量+1(简单循环,有一些超时)
  5. 从测试目录中获取最后修改的文件(example
  6. 等待所需的文件扩展名,只是为了确保文件已完全下载(再次,简单循环,超时,重复步骤 5)。
  7. 根据您的需要验证文件名/内容/等。

我希望这种方法能够满足您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.