簡體   English   中英

使用 watir-webdriver 保存圖像

[英]Save image with watir-webdriver

我如何保存通過 watir-webdriver 加載的圖像? 所有手冊和示例僅顯示獲取圖像的 src,並使用 open-uri 保存它。 但是我需要保存該圖像,該圖像是在我的頁面加載時生成的。 我怎樣才能做到這一點?

我可以同時使用 watir 和 watir-webdriver 嗎? 例如:

require 'watir-webdriver'
require 'watir'
@driver = Watir::Browser.new :firefox
@driver.goto (@base_url)
@img = @driver.image(id: 'CaptchaImage').save("2131.png")

我怎么能做這樣的事情? 或者如何從緩存中獲取它?

有人可以幫我嗎?

OpenURI 將幫助您..

require "watir-webdriver"
require "open-uri"

b = Watir::Browser.new :chrome
b.goto "http://stackoverflow.com/"

File.open("target_file.jpg", 'wb') do |f|
 f.write open(b.img(:class, "sponsor-tag-img").src).read
end

希望你沒有做壞事.. :)

如果有幫助,請告訴我。

require 'watir-webdriver'

如果你經常這樣做,你可以擴展 Watir 的 Image 類:

Watir::Image.class_eval do

    def save path_to_new_file
          #so that src can be opened without raising: 
          #Errno::ENOENT: No such file or directory @ rb_sysopen
        require 'open-uri' 

        open(path_to_new_file, 'wb') do |file|
          file << open(src).read
        end
    end

end

所以它可以如下使用:

browser = Watir::Browser.start 'google.com'
image = browser.img
image.save 'our_images/hi.png'

根據 watir-webdriver 文檔,沒有Image#save方法,因為它尚未實現。

另一方面,watir-classic 確實有一個Image#save方法。 這是 rdoc 中的示例:

browser.image.save("c:/foo/bar.jpg")

結果證明這比它應該的要困難一點,但我需要完成這個,因為只有在設置了有效的會話 cookie 時才能訪問圖像。 這就是我最終設法實現這一目標的方式:

1.安裝watir-extensions-element-screenshot

https://github.com/ansoni/watir-extensions-element-screenshot
您可能想要執行gem install watir-extensions-element-screenshot

2. 調整瀏覽器窗口大小

這也適用於無頭 phantomJS。 初始化瀏覽器后,將窗口大小設置為較大的值,以防止圖像大於瀏覽器窗口時發生錯誤。

browser = Watir::Browser.new :phantomjs
browser.window.resize_to(1900, 1080)

3.獲取圖片元素並截圖

就我而言,整個網站都是一個圖像。 幸運的是, browser.html確實顯示圖像仍然封裝在<img>標簽中,因此我們可以像這樣訪問圖像(在這個例子中頁面上的所有圖像):

browser.elements( :tag_name => "img" ).each do |x|
    x.screenshot("file_name.png")
end

這會將圖像保存到file_name.png 它不是完全相同的文件,而是它的屏幕截圖。 但就圖像下載而言,這對我來說是一個完美的解決方案,希望對其他人也是如此!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM