watirでウェブサイトの画像を保存するには、open-uriなどでリロードする必要はありませんか?ウェブサイトから画像を保存する(ワイア)
I:私は
File.open(file_name, 'wb') do |f|
f.write open(img.src).read
end # file open
を使用することはできません理由は画像が現在の(login-)セッション中に生成され、一度だけなので、「外部」第2回のアクセスが不可能であるということです。
II: browser.images.save()
- これは、どちらも役に立ちません。セーブ先のダイアログが開きます。したがって、オートメーションにとっては無駄です。
例: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のためだけで、別のブラウザを使用する必要があるので、役立たないということですか? –
私の場合は、保存ダイアログを開き、待ちます。マニュアルに記載されているように、ファイルが存在する場合にのみ発生するはずですが、そうではありません(空のディレクトリとランダムファイル名) – inselberg
これは奇妙です。私は画像を新しいファイルとして保存することに問題はありません。 –