2012-04-01 41 views
5

Tôi gặp một số khó khăn với một trong các biểu mẫu đăng nhập của nhà cung cấp dịch vụ của chúng tôi. Các trang web khác đang hoạt động tốt nhưng vì một số lý do tôi không thể vượt qua biểu mẫu đăng nhập của họ.Đăng nhập vào trang web bằng Cơ chế và Nokogiri?

Trang web đăng nhập cho là như thế này:

<form accept-charset="UTF-8" action="/sessions" class="new_user_session" id="new_user_session" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="kaLEkPesQfeheronzGTdfnVAzpuUiC+VmjVXBu540n8=" /></div> 

     <fieldset class="big"> 

     <div class="form-row"> 
     <div class="form-label"> 
     <label for="user_session_email">Email</label> 
     </div> 
     <div class="form-field"> 
     <input id="user_session_email" name="user_session[email]" size="30" type="text" /> 

     </div> 

     </div>   

     <div class="form-row"> 
     <div class="form-label"> 
     <label for="user_session_password">Password</label> 
     </div> 
     <div class="form-field"> 
     <input id="user_session_password" name="user_session[password]" size="30" type="password" /> 

     </div> 

     <div class="form-comment"><p><a href="/password_resets/new" class="link-password-recovery">Forgot your password?</a></p></div> 
     </div> 

     <div class="form-row optional"> 
      <div class="form-field"> 
      <label for="user_session_remember_me"><input name="user_session[remember_me]" type="hidden" value="0" /><input id="user_session_remember_me" name="user_session[remember_me]" type="checkbox" value="1" /> Remember me for 2 weeks</label> 
      </div> 

     </div> 

</fieldset> 

Tôi đã cố gắng để đăng nhập sử dụng mã tương tự như khác các trang web khác nhưng nó không hoạt động.

# Create a new mechanize object 
agent = Mechanize.new 

# Load the dial9 website 
page = agent.get("http://webapplication.co.uk") 

# Select the first form 
form = agent.page.forms.first 
form.username = 'username 
form.password = 'password' 

# Submit the form 
page = form.submit form.buttons.first 

Tôi cũng đã thử một cách khác nhau của việc đăng nhập như đề xuất trong questions/answers khác SO:

email = '[email protected]' 
password = 'password 

# Create a new mechanize object 
agent = Mechanize.new 

# Load the postmarkapp website 
page = agent.get("https://domain.com") 

# Select the first form 
form = agent.page.forms.first 
form.field_with(:email => "user_session_email").value = email 
form.field_with(:password => "user_session_password").value = password 

# Submit the form 
page = form.submit form.buttons.first 

Sử dụng phương pháp này xác thực tôi nhận được đầu ra sau khi chạy nhiệm vụ rake:

undefined method `email' for [hidden:0x3fef2ab2b994 type: hidden name: utf8 value: ✓]:Mechanize::Form::Hidden 

Khi kiểm tra kỹ hơn, lỗi trên có vẻ là do thực tế là có trường ngay sau khi biểu mẫu được bắt đầu:

<form accept-charset="UTF-8" action="/sessions" class="new_user_session" id="new_user_session" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="kaLEkPesQfeheronzGTdfnVAzpuUiC+VmjVXBu540n8=" /></div> 

Tôi có thiếu gì đó không? Nếu có thì sao? Bất kỳ con trỏ được đánh giá cao!

Trả lời

5

Hãy thử thay đổi

form.field_with(:email => "user_session_email").value = email 
form.field_with(:password => "user_session_password").value = password 

để

form.field_with(:name => "user_session[email]").value = email 
form.field_with(:name => "user_session[password]").value = password 
Các vấn đề liên quan