2012-01-15 97 views
0

我想登錄到一個班級的網站,但每次我提交表單時,我都會看到登錄頁面。爲什麼機械化登錄失敗?

我已經使用這兩種方式來提交表單,導致相同的結果。在提交它之前,我已經打印出了表格,並確保所有值都正確填寫。關於爲什麼這可能會失敗的任何建議?

#!/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 2012-01-15 01:11:45

+0

這是2.1,我正在運行Ruby 1.9.3,你可以在腳本中看到lol。 – LF4 2012-01-15 02:08:46

+0

2.1太麻煩了使用恕我直言。我會嘗試1.0.0 – pguardiario 2012-01-15 02:40:10

回答

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 2012-01-15 20:48:09

1

而不是
page = a.submit(form, form.buttons.first)
嘗試
page = form.click_button