mechanize:Mechanize::Page#iframes_with
以下のような HTML で
<html> <head> <title>iframe test</title> </head> <body> <iframe src="iframe1.html" name="i1" width="200" height="100">foo</iframe> <iframe src="iframe2.html" name="i2" width="400" height="300">bar</iframe> </body> </html>
>> require 'mechanize' => true >> agent = Mechanize.new => #<Mechanize:0xb74a82e4 ... >> page = agent.get('http://127.0.0.1:8080/test03_iframe.html') => #<Mechanize::Page {url #<URI::HTTP:0xb74a4964 URL:http://127.0.0.1:8080/test03_iframe.html>} {meta} {title "iframe test"} {iframes #<Mechanize::Page::Frame "i1" "iframe1.html"> #<Mechanize::Page::Frame "i2" "iframe2.html">} {frames} {links} {forms}> >> page.iframes_with(:src => //) {|f| p f} [#<Mechanize::Page::Frame "i1" "iframe1.html"> , #<Mechanize::Page::Frame "i2" "iframe2.html"> ] => [#<Mechanize::Page::Frame "i1" "iframe1.html"> , #<Mechanize::Page::Frame "i2" "iframe2.html"> ] >> page.iframes_with(:src => //) {|f| p f.src } NoMethodError: undefined method `src' for #<Array:0xb74937a4> from (irb):5 from (eval):6:in `iframes_with' from (irb):5 >> page.iframes_with(:src => //) => [#<Mechanize::Page::Frame "i1" "iframe1.html"> , #<Mechanize::Page::Frame "i2" "iframe2.html"> ] >> page.iframes_with(:src => //)[0] => #<Mechanize::Page::Frame "i1" "iframe1.html"> >> page.iframes_with(:src => //)[1] => #<Mechanize::Page::Frame "i2" "iframe2.html"> >> page.iframes_with(:src => //) {|f| p f.class } Array => [#<Mechanize::Page::Frame "i1" "iframe1.html"> , #<Mechanize::Page::Frame "i2" "iframe2.html"> ] >> page.iframes_with(:src => //).each {|f| p f.class } Mechanize::Page::Frame Mechanize::Page::Frame => [#<Mechanize::Page::Frame "i1" "iframe1.html"> , #<Mechanize::Page::Frame "i2" "iframe2.html"> ] >> page.iframes_with(:src => //).each {|f| p f.src } "iframe1.html" "iframe2.html" => [#<Mechanize::Page::Frame "i1" "iframe1.html"> , #<Mechanize::Page::Frame "i2" "iframe2.html"> ]