2012-04-01 10 views
5

Tengo algunas dificultades con uno de los formularios de inicio de sesión de los proveedores de servicios. Los otros sitios funcionan bien, pero por alguna razón no puedo pasar su formulario de inicio de sesión.Iniciando sesión en un sitio web utilizando Mechanize y Nokogiri?

El inicio de sesión para el sitio web es la siguiente:

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

he tratado de iniciar la sesión utilizando el mismo código que otros los otros sitios, pero no funciona.

# 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 

También han tratado de una manera diferente de sesión como se sugiere en otro 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 

uso de este método de autenticación que obtener la salida siguiente cuando se ejecuta la tarea rake:

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

Tras una inspección más cercana, el error anterior parece deberse al hecho de que hay un campo inmediatamente después de que se inicia el formulario:

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

¿Emite más? ¿Entonces qué? ¡Cualquier apuntador es apreciado!

Respuesta

5

intente cambiar

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

a

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