Ruby Watir-webdriver在直接导航到图像时保存图像

时间:2013-10-23 18:34:47

标签: ruby image watir watir-webdriver downloading

我正在尝试从一系列通过JS加载的页面获取一组信息,并完成我使用watir-webdriver加载页面和nokogiri来解析它们。这很好用,但是,我需要从页面上抓取一张照片。在页面加载时生成图片的路径,因此我编写了以下内容来创建图像的相对URL的数组,并直接导航到数组的第一个索引的绝对URL,这始终是我想要的图像。 / p>

img_srcs = $page_html.css('img').map{ |i| i['src'] }    #genereates an array of relative urls pointing to every image
imageURL= "website.com" + img_srcs[1].gsub("..","").to_s    #take the relative URL of image at index position 1 (the image) and converts it to an absolute URL
$browser.goto(imageURL)

如何保存浏览器直接加载的图像?任何帮助将不胜感激,如果我不清楚,请告诉我。

编辑: 我现在添加了以下代码

image_source = $browser.image(:class => "decoded").image.src
File.open("#{$imageID}.txt", "w") do |f|
    f.write open(image_source).read
    f.close
end

但是,我收到了错误

C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.4/lib/watir-webdriver/el
ements/element.rb:490:in 'assert_exists': unable to locate element, using {:tag_
name=>"img"} (Watir::Exception::UnknownObjectException)
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.4/lib/watir
-webdriver/attribute_helper.rb:71:in 'block in define_string_attribute'
    from 12.rb:121:in 'imageDownload'
    from 12.rb:134:in 'navAndGrab'
    from 12.rb:137:in '<main>'

1 个答案:

答案 0 :(得分:0)

当你这样做时:

$browser.image(:class => "decoded").image.src

您正在寻找html:

<img class="decoded">
  <img src="what_you_want"></img>
</img>

我猜你的HTML不是那样的,所以你得到了关于在图像中找到图像的例外。

你可能只想要第一个带有类解码的图像(删除第二个.image):

image_source = $browser.image(:class => "decoded").src

或许你想要完整的图像列表,然后得到第一个:

image_source = $browser.images(:class => "decoded").first.src