使用Mechanize登录?

时间:2014-07-21 16:12:08

标签: ruby-on-rails ruby mechanize

我在使用Mechanize登录网站时遇到问题。

我的登录代码是:

require 'rubygems'
require 'mechanize'

agent = Mechanize.new
page = agent.get('example.com')
logowanie = page.forms.first
logowanie.fields[0] = 'username'
logowanie.fields[1] = 'password'
logowanie.add_field! 'send','Zaloguj'
logowanie.submit
pp page

表格如下:

  #<Mechanize::Form
   {name nil}
   {method "POST"}
   {action "http://m.wykop.pl/i/zaloguj/"}
   {fields
    [text:0x547997e type: text name: user[username] value: ]
    [field:0x5479870 type: password name: user[password] value: ]
    [hidden:0x5479712 type: hidden name: __token value: c46dad2370bb10d3afbf65116048f5fa-1405958179]}
   {radiobuttons}
   {checkboxes}
   {file_uploads}
   {buttons [submit:0x54795e6 type: submit name:  value: Zaloguj]}>

我得到的输出是:

/var/lib/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize/form.rb:312:in `block in save_hash_field_order': undefined method `node' for "encoree1337":String (NoMethodError)
    from /var/lib/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize/form.rb:311:in `each'
    from /var/lib/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize/form.rb:311:in `save_hash_field_order'
    from /var/lib/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize/form.rb:255:in `build_query'
    from /var/lib/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize/form.rb:337:in `request_data'
    from /var/lib/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize.rb:1271:in `post_form'
    from /var/lib/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize.rb:548:in `submit'
    from /var/lib/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize/form.rb:223:in `submit'
    from /home/encore/Documents/Aptana Studio 3 Workspace/bot/bot.rb:10:in `<main>'

你能告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

我发现了我的错误。

代码是:

logowanie.fields[0] = 'login'
logowanie.fields[1] = 'password'

它必须是:

logowanie.fields[0].value = 'login'
logowanie.fields[1].value = 'password'