Reputation: 749
I start using mechanize with Rails, but seems it doesn't work correctly, it won't find fields inside form. I've tried to use example from Mechanize web site, but it doesn't work. I did:
agent = Mechanize.new
page = agent.get('http://google.com/')
It returns:
=> #<Mechanize::Page
{url #<URI::HTTP:0xb340ba74 URL:http://www.google.by/>}
{meta_refresh}
{title "Google"}
{iframes}
{frames}
{links
#<Mechanize::Page::Link
"Выявы"
"http://www.google.by/imghp?hl=be&tab=wi">
#<Mechanize::Page::Link
"Пераклад"
"http://translate.google.by/?hl=be&tab=wT">
#<Mechanize::Page::Link
"Групы"
"http://groups.google.by/grphp?hl=be&tab=wg">
#<Mechanize::Page::Link
"Гісторыя пошуку"
"http://www.google.com/history/optout?hl=be">
#<Mechanize::Page::Link "Наладкі" "/preferences?hl=be">
#<Mechanize::Page::Link
"Увайсьці"
"https://www.google.com/accounts/ServiceLogin?hl=be&continue=http://www.google.by/">
#<Mechanize::Page::Link
"Пашыраны пошук"
"/advanced_search?hl=be">
#<Mechanize::Page::Link "Language tools" "/language_tools?hl=be">
#<Mechanize::Page::Link
"русском"
"http://www.google.by/setprefs?sig=0_U7jPRU_lW24j6EjPs4nuN1IxPcM=&hl=ru">
#<Mechanize::Page::Link "Усё пра Google" "/intl/be/about.html">
#<Mechanize::Page::Link "Google.com in English" "http://www.google.com/ncr">}
{forms
#<Mechanize::Form
{name "f"}
{method "GET"}
{action "/search"}
{fields}
{radiobuttons}
{checkboxes}
{file_uploads}
{buttons}>}>
page.form('f')
returns:
=> #<Mechanize::Form
{name "f"}
{method "GET"}
{action "/search"}
{fields}
{radiobuttons}
{checkboxes}
{file_uploads}
{buttons}>
google_form.q = 'ruby mechanize'
returns:
NoMethodError: undefined method
q=' for #<Mechanize::Form:0xb33e7070> from /usr/lib/ruby/gems/1.8/gems/mechanize-2.0.1/lib/mechanize/form.rb:162:in
method_missing' from (irb):23
I use Mechanize version 2.0.1 and Nokogiri version 1.4.4, Ruby 1.8.7 and Rails 3.1
Upvotes: 0
Views: 376
Reputation: 26488
Use the hash access variation to set a field:
google_form['q'] = 'ruby mechanize'
Upvotes: 1