2012-04-01 23 views
5

サービスプロバイダのログインフォームに問題があります。他のサイトは正常に動作していますが、何らかの理由でログインフォームを通過できません。MechanizeとNokogiriを使ってウェブサイトにログインしていますか?

のためのウェブサイトのログインがこのようなものです:

<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> 

私は他の他のサイトと同じコードを使用してログインしようとしたが、それは動作しません。他に提案されているよう

# 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 

は、私はまた、SO questions/answersログインの異なる方法を試してみました:

この認証方法を使用して
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 

rakeタスクの実行時に、私は次の出力を得る:

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

上記のエラーは、フォームが開始された直後のフィールドが存在するためです。

<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> 

私に何かが不足していますか?もしそうなら、何?すべてのポインタが評価されています!

答えて

5

form.field_with(:name => "user_session[email]").value = email 
form.field_with(:name => "user_session[password]").value = password 

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

を変更してみてください

関連する問題