如何在测试运行期间更改下载目录

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

我有一些测试,可以下载文件并在其中声明数据。我面临的问题是测试并行运行,因此每次测试后我都无法删除下载目录,否则它们将删除其他文件。但是,这样做的问题在于文件名包含测试不知道的时间戳记(唯一标识符),因此无法知道要打开哪个文件。有没有办法在测试运行的中间更改给定测试的default_directory?这个想法是要告诉capybara,对于某些测试,替代下载路径是暂时的另一路径?我想如果可能的话,这里也可能会有交叉布线,因为其他测试仍在运行,并且期望设置原始路径?

或者,对此有任何建议吗?

我的水豚配置看起来像这样

  options = Selenium::WebDriver::Chrome::Options.new
  preferences = {
      prompt_for_download: false,
      credentials_enable_service: false,
      default_directory: DownloadUtil::PATH
  }
  options.add_preference(:download, preferences)
  options.add_argument('--disable-infobars')
  options.add_argument('--headless')
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
capybara
1个回答
2
投票

大多数多进程并行测试设置为您提供了一个环境变量,您可以使用它来配置在每个测试运行器实例(数据库名称,端口等)之间需要不同的内容。在parallel_rspec的情况下为TEST_ENV_NUMBER。使用它,您可以将每个测试运行器中的硒/ chrome实例配置为使用不同的下载目录-类似

preferences = {
  prompt_for_download: false,
  credentials_enable_service: false,
  default_directory: DownloadUtil::PATH + ENV['TEST_ENV_NUMBER']
}
© www.soinside.com 2019 - 2024. All rights reserved.