2012-04-01 12 views
5

Ich habe einige Schwierigkeiten mit einem unserer Anmeldeformulare für Service Provider. Die anderen Seiten funktionieren gut, aber aus irgendeinem Grund komme ich nicht an ihrem Login-Formular vorbei.Mit Mechanize und Nokogiri auf einer Website einloggen?

Die Website Login für so:

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

Ich habe mit dem gleichen Code wie andere den anderen Websites einzuloggen versucht, aber es funktioniert nicht.

# 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 

Ich habe auch versucht, eine andere Art und Weise in anderen SO questions/answers der Protokollierung wie vorgeschlagen in:

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 

diese Methode der Authentifizierung verwende ich die folgende Ausgabe erhalten, wenn die Rake Aufgabe ausgeführt wird:

Bei näherer Betrachtung scheint der obige Fehler darauf zurückzuführen zu sein, dass unmittelbar nach dem Start des Formulars ein Feld vorhanden ist:

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

Fehle ich etwas? Wenn ja, was? Irgendwelche Hinweise werden geschätzt!

Antwort

5

Try

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

zu

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