如何通过Ruby中的https下载文件

时间:2015-09-10 22:24:07

标签: ruby selenium ssl selenium-webdriver capybara

我有一个上传文件的webapp。您可以使用有效帐户登录该站点,然后下载这些文件。我目前正在使用Ruby,Capybara和Selenium Webdriver自动化整个框架,但我不能自动化下载文件的过程。

到目前为止,我尝试使用Selenium(它没有用),我还使用了Ruby库open-uri

def downloadFile(path)
  open('testing.docx', 'wb') do |file|
    file << open(path).read
  end
  download = open(path)
  IO.copy_stream(download, File.expand_path("resources\\downloads"))
end

其中path是文件链接的href,但起初我收到以下错误:

  

openssl :: ssl :: sslerror:ssl_connect returns = 1 errno = 0 state = sslv3 read server certificate b:certificate verify failed

为了避免它,我使用了以下代码:

  

OpenSSL :: SSL :: VERIFY_PEER = OpenSSL :: SSL :: VERIFY_NONE

但最后,我无法下载文件。

此时我想我应该加载一个证书,或者从cookie或其他地方检索登录令牌,但我无法弄清楚究竟在哪里。

有没有办法从需要登录的页面下载文件?

2 个答案:

答案 0 :(得分:0)

如果您使用Selenium,则应通过单击相应的链接和按钮在浏览器中下载文件。

下面介绍如何设置浏览器下载。

https://watirwebdriver.com/browser-downloads/

答案 1 :(得分:-1)

尝试将uri从“https”更改为“http”,如下所示:

path = path.sub("https","http")