ins*_*erg 7 ruby watir watir-webdriver
如何使用watir保存网站图像,而无需使用open-uri或类似版本重新加载?
我:我不能用的原因
File.open(file_name, 'wb') do |f|
f.write open(img.src).read
end # file open
Run Code Online (Sandbox Code Playgroud)
是图像是在当前(登录)会话中生成的,只有一次,因此无法进行"外部"第二次访问.
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我最好的想法是使用代理获取所有图像.但也许有一种"轮流方式".
环境:
# 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)
Run Code Online (Sandbox Code Playgroud)
编辑:我知道有不同的方式从网站上获取图像,没有事件思考我可以建立一个包含这么多解决方案的列表,但它即将用watir解决问题.
Spo*_*tor -2
我不在 Windows 上,所以无法尝试“watir-way”,但您可以简单地通过调用 curl 或 wget 来做到这一点:
browser.images.each do |img|
%x| curl #{img.src} -O #{img.src.split('/').last} |
end
Run Code Online (Sandbox Code Playgroud)