2012-04-01 2 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> 

.

:

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 

레이크 태스크를 실행할 때 I 출력을 다음 얻을 인증이 방법을 사용하여 : SO 다른 questions/answers에 제안

# 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 

는 또한 로그인 다른 방법을 시도
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(: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