如何使用watir保存网站图像,而无需使用 open-uri 或类似工具重新加载它们?
我:我不能使用的原因
File.open(file_name, 'wb') do |f|
f.write open(img.src).read
end # file open
是图像是在当前(登录)会话中生成的并且仅生成一次,因此无法进行“外部”第二次访问。
II:
browser.images.save()
- 仅适用于 ie - 也没有帮助,它会打开保存到对话。所以它对自动化毫无用处。
示例:http ://wiki.openqa.org/display/WTR/Save+All+Images+on+a+Webpage
require 'watir'
browser = Watir::Browser.new :ie
browser.goto 'http://google.com'
idx = 0
browser.images.each do |x|
puts idx
idx += 1
location = 'c:\tmp\file-' + idx.to_s + '.jpg'
x.save(location)
end
github来源:http ://rubydoc.info/github/watir/watir-classic/Watir/Image
# File 'lib/watir-classic/image.rb', line 48
def save(path)
@container.goto(src)
begin
fill_save_image_dialog(path)
@container.document.execCommand("SaveAs")
ensure
@container.back
end
end
我最好的想法是使用代理来获取所有图像。但也许有一个“水路”。
环境:
# ruby 1.9.3p125 (2012-02-16) [i386-mingw32]
# watir (4.0.2 x86-mingw32)
# watir-classic (3.6.0, 3.5.0, 3.4.0)
# watir-webdriver (0.6.4, 0.6.2)
编辑:我知道有不同的方法可以从网站获取图像,并且没有事件思考我可以建立一个包含这么多解决方案的列表,但它即将解决watir的问题。