在Windows上使用Selenium WebDriver在自定义路径下载文件无法使用ruby

时间:2014-08-05 10:37:15

标签: ruby selenium-webdriver

我正在使用以下代码下载CSV文件及其在MAC上正常工作但在Windows上无效。

在窗口上它下载文件,但它将其保存在下载文件夹中,即默认路径

    def self.launch(browser=:firefox, profile=nil)
        profile = Selenium::WebDriver::Firefox::Profile.new
        path = File.join(File.join(Dir.pwd), 'csv_files')
        FileUtils.rm_rf(path) if  Dir.exists? path
        Dir.mkdir(path)
        profile['browser.download.dir'] = path
        profile['browser.download.folderList'] = 2
        profile['browser.helperApps.neverAsk.saveToDisk'] = 'text/csv'
        profile['pdfjs.disabled'] = true
        $watir_browser = UITest.new_browser_session browser, profile
        $driver = $watir_browser.wd
        return $watir_browser
      end

如果需要进行任何更改,请建议我。

2 个答案:

答案 0 :(得分:1)

<强>问题

当您执行该行时:

path = File.join(File.join(Dir.pwd), 'csv_files')

路径为:

'some/path/csv_files'

在Windows中,&#34; /&#34;需要是&#34; \&#34;:

'some\path\csv_files'

<强>解决方案

当平台为Windows时,您可以做的是替换斜杠:

path = File.join(File.join(Dir.pwd), 'csv_files')
path.gsub!("/", "\\") if Selenium::WebDriver::Platform.windows?

答案 1 :(得分:1)

请尝试这个,让我知道。

relative_path = File.expand_path File.dirname(__FILE__)

OR

require 'open-uri'
require 'selenium-webdriver'
 path = File.join(File.join(Dir.pwd), 'csv_files')
    Dir.mkdir(path) unless File.exists?(path)
    modified_path = path.gsub!("/", "\\") if Selenium::WebDriver::Platform.windows?
    File.delete(File.join(modified_path, 'test.csv')) if File.exist?(File.join(modified_path, 'test.csv'))
    open(File.join(modified_path, 'test.csv'), 'wb') do |file|
      file << open('http://example.com').read
    end