【发布时间】:2016-03-29 18:32:59
【问题描述】:
如何使用 watir 保存网站图片,而无需使用 open-uri 或类似工具重新加载它们?
我:我不能使用的原因
File.open(file_name, 'wb') do |f|
f.write open(img.src).read
end # file open
图像是在当前(登录)会话中生成的,并且仅生成一次,因此无法进行“外部”第二次访问。
二:
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。
【问题讨论】:
-
为什么
browser.image.save(file)没用?该方法打开保存对话框,输入所需字段并保存文件(即该对话框也是自动化的)。或者你的意思是它没有帮助,因为它只适用于 IE,你需要使用不同的浏览器? -
在我的情况下,它会打开保存对话框并等待。如手册中所述,仅当文件存在时才会发生,但情况并非如此(空目录和随机文件名)
-
这很奇怪。将图像另存为新文件时没有遇到任何问题。
-
`c:\tmp` 目录是否存在?如果目录不存在,您的示例只会为我挂起。
-
对这个问题的回答对您有帮助吗? stackoverflow.com/questions/16190826/…
标签: ruby watir watir-webdriver