2014-06-17 3 views
1

Mechanize로 채우려는 양식 아래에; 이미 일반적으로 사용되는 모델을 시도했습니다 (예제는 Using Ruby and Mechanize to fill in a remote login form mystery). 그러나 성공하지 못했습니다.기계어로 로그인 폼을 작성하는 방법은 무엇입니까?

<form method="post" action="/sso/login.php" id="form-login-page"> 
    <div id="form-login-container-page" style="color:red;text-align:center;width:100%;margin:10px 0"></div> 
    <input type="hidden" name="minimalist" value="1"> 
    <input type="hidden" name="SSO_Context" value="/pdf/telecharger2.php?pdfpf=&amp;pdfg=%2Fpdf%2Ftelecharger.php%3Fdir%3DJOURNAL%26file%3D20140603.pdf"> 
    <div class="clear">&nbsp;</div> 
    <label>Email<span>*</span></label> 
    <div class="insc-saisie"> 
    <input class="insc-saisie-champ" type="text" id="login-page" name="login" value=""> 
    </div> 
    <div class="clear">&nbsp;</div> 
    <label>Mot de passe<span>*</span></label> 
    <div class="insc-saisie"> 
    <input class="insc-saisie-champ" type="password" id="password-page" name="password" value=""> 
    </div> 
    <div class="clear">&nbsp;</div> 
    <label><input type="checkbox" unchecked=""></label> 
    <div class="insc-saisie">Se souvenir</div> 
    <div class="clear">&nbsp;</div> 
    <label>&nbsp;</label> 
    <div class="insc-saisie"> 
    <a href="javascript:showLostPassForm();">Mot de passe oublié ?</a> 
    </div> 
    <div class="clear">&nbsp;</div> 
    <label>&nbsp;</label> 
    <div class="insc-saisie"> 
    <input class="b-connexion" type="image" src="/img/trans.gif"> 
    </div> 
    <div class="clear">&nbsp;</div> 
    <div class="clear">&nbsp;</div> 
    <label><span>*</span></label> 
    <div class="insc-saisie">Saisie obligatoire</div> 
    <div class="clear">&nbsp;</div> 
</form> 

여기 내 시도

form = agent.page.parser.css('form')[1] 
agent.page.forms[1]["login"] = "my_login" 
agent.page.forms[1]["password"] = "my_password" 
agent.page.forms[1].submit 
+0

나는 오류 (들) (이다) 발생 있는지 궁금합니다. 오류 출력은 질문에 첨부하여 더 잘 찾아야합니다. – ekremkaraca

+0

그래서 .. 작동하지 않는 것은 무엇입니까? – Cereal

+0

죄송합니다, 저의 잘못! 내 목표는 PDF 파일을 긁어내는 것입니다. 그러나 다운로드가 로그인에 의해 조건 지워 지므로 테스트 할 때 코드가 나를 로그인 페이지로 리디렉션하므로 결과적으로 자동 완성 (양식 채우기)이 작동하지 않습니다 코드의 두 번째 부분 (로그인이 필요없는 링크로 작동) : @watan = {} page.parser.xpath ('// th/a'). \t puts @watan [link.text.strip] = link [ 'href'] 끝 고마워요! –

답변

2

다음 코드는 작동합니다 :

page = agent.get("your_page_url") 

form = page.form_with(:id => 'form-login-page') 
form.login = "my_login" 
form.password = "my_password" 
form.submit 
+0

감사합니다. 정말 도움이됩니다! 불행히도 그것은 작동하지 않습니다; 첫 번째 부분 (인증)이 잘되고, 두 번째 부분도 괜찮습니다 (이미 테스트 한 부분). 나는 코키 문제를 의심하고 있습니다. "temp_jar = agent.cookie_jar.jar"로 이미 시도했지만 작동하지 않습니다. 힌트는 무엇입니까? 매우 감사 ! –

+0

왜 작동하지 않습니까? 당신은 인증과 근근이 살아도 괜찮다고 말했어. – JordanD

+0

별도로 두 코드가 작동하지만 두 코드를 결합하여 디버깅 할 때 두 번째 부분 (스크래핑)이 나를 로그인 페이지로 리디렉션하기 때문에 연결되지 않은 것처럼 보입니다. 그래서 나는 그것이 코키 문제라고 추측한다. 감사 ! –

관련 문제