2012-01-15 8 views
0

Я пытаюсь войти на сайт класса, но каждый раз, когда я отправляю форму, я получаю страницу входа.Почему логин Mechanize не работает?

Я использовал оба способа, чтобы представить форму, приводя к тому же результату. Я распечатал форму, прежде чем отправлять ее для проверки и убедиться, что все значения заполнены правильно, какими они были. Любые предложения о том, почему это может быть неудачным?

#!/home/webadmin/.rvm/rubies/ruby-1.9.3-p0/bin/ruby 

require 'rubygems' 
require 'mechanize' 
require 'logger' 

passwd = gets.chomp 

a = Mechanize.new do |agent| 
    agent.user_agent_alias = 'Windows Mozilla' 
    agent.log = Logger.new(STDOUT) 
end 

page = a.get('https://it210.it.et.byu.edu/accounts/login/?next=/') 
puts "\n=== Login Page ===" 
pp page 
form = page.forms.first 
form['username'] = 'user' 
form['password'] = passwd 
#pp form 
page = a.submit(form, form.buttons.first) 
#page = form.submit 

puts "\n\n\n=== Next Page (should be homepage) ===" 
pp page 
+0

какая версия механизировать? – pguardiario

+0

Это 2.1, и я запускаю Ruby 1.9.3, как вы можете видеть в скрипте LOL. – LF4

+0

2.1 слишком глючит, чтобы использовать IMHO. Я бы попробовал 1.0.0 – pguardiario

ответ

1

Я столкнулся с подобной проблемой. Это работает для меня

$browser.get("something") 
login_page = $browser.page.links.find { |l| l.text == 'Login' }.click 

username_field = login_page.form.field_with(:name => "username") 
username_field.value = $username 
password_field = login_page.form.field_with(:name => "password") 
password_field.value = $password 

login_page.form.submit 
+0

Спасибо, но я перехожу непосредственно на страницу входа с помощью get(), поэтому мне не нужна дополнительная строка, чтобы щелкнуть страницу входа. Форма заполняется правильно, а это просто проблема с отправкой. – LF4

1

Вместо
page = a.submit(form, form.buttons.first)
попробовать
page = form.click_button

Смежные вопросы