我在使用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>'
你能告诉我我做错了什么吗?
答案 0 :(得分:1)
我发现了我的错误。
代码是:
logowanie.fields[0] = 'login'
logowanie.fields[1] = 'password'
它必须是:
logowanie.fields[0].value = 'login'
logowanie.fields[1].value = 'password'