这是capybara通过HTTPS协议访问的页面上的图像标记:
<img src="path">
使用任何类型的驱动程序使用capybara从页面获取图像文件是否有任何方法?
我不能使用像File.read这样的东西(&#39;路径&#39;)因为图像也只能通过HTTPS访问。我的最新研究为我带来了这样的解决方案:
但我确实相信存在漂亮的解决方案。
已编辑1:
我已经尝试过padde的解决方案,但这里是响应机构:
<html><head><title>Object moved</title></head>
<body>
<h2>Object moved to <a href=\"/Bledy/Blad404.aspx?aspxerrorpath=/CaptchaType.ashx\">here</a>.</h2>
</body>
</html>
已编辑2:
> curl -I image_path
5860cf30abf5d5480
HTTP/1.1 302 Found
Cache-Control: private
Content-Length: 168
Content-Type: text/html; charset=utf-8
Location: /Bledy/Blad404.aspx?aspxerrorpath=/CaptchaType.ashx
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sat, 03 Nov 2012 17:18:55 GMT
答案 0 :(得分:2)
如果我做对了,你可能想要的是来自Ruby的HTTPS请求。尝试:
require 'net/https'
url = URI.parse('path')
Net::HTTP.start(url.host, url.port, :use_ssl => true, :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
res = http.get(url.request_uri)
open("image.png", "wb") do |f|
f.write(res.body)
end
end
对于裁剪,您可以使用chunky_png
(纯Ruby)或rmagick
(需要ImageMagick)
修改:如果您想关注重定向,可以执行
require 'net/https'
def process_image( content )
# do your cropping here
open("image.png", "wb") do |f|
f.write(content)
end
end
def fetch( url )
Net::HTTP.start(url.host, url.port, :use_ssl => true, :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
response = http.get(url.request_uri)
case response.code
when Net::HTTPRedirection
fetch response['location']
else
process_image response.body
end
end
end
fetch URI.parse('path')