2010-10-18 31 views
6

Tôi đang gặp sự cố khi gửi kết quả gửi biểu mẫu (Tôi có thể gửi biểu mẫu nhưng tôi không thể gửi biểu mẫu trên trang tiếp theo đầu tiên).Gửi biểu mẫu trong cơ giới hóa

tôi có:

browser = mechanize.Browser() 
browser.set_handle_robots(False) 
browser.open('https://www.example.com/login') 
browser.select_form(nr=0) 

browser.form['j_username'] = 'username' 
browser.form['j_password'] = 'password' 
req = browser.submit() 

này hoạt động, như print req kết quả trong

'

<body onload="document.forms[0].submit()"> 
    <noscript> 
     <p> 
      <strong>Note:</strong> Since your browser does not support JavaScript, 
      you must press the Continue button once to proceed. 
     </p> 
    </noscript> 

    <form action="https://www.example.com/Shibboleth.sso/SAML2/POST" method="post"> 
     <div> 
      <input type="hidden" name="RelayState" value="cookie:95ca495c"/>     

      <input type="hidden" name="SAMLResponse" value="really long encoded value"/>     
     </div> 
     <noscript> 
      <div> 
       <input type="submit" value="Continue"/> 
      </div> 
     </noscript> 
    </form> 

</body> 

'

Nhưng tôi nhận được lỗi khi tôi cố gắng sử dụng req.select_form(nr=0)

Tôi cho rằng điều này có lẽ là từ một cái gì đó dọc theo dòng cách cơ giới hóa trả về các đối tượng từ submit() và rằng tôi đang đi về điều này một cách sai lầm.

Bất kỳ đầu vào hoặc hướng dẫn sẽ được đánh giá :)

+1

bạn không quên gửi biểu mẫu đầu tiên này, để nhận biểu mẫu đăng nhập? ('browser.submit()' sau 'browser.select_form (nr = 0)') – mykhal

+0

Không, tôi đặt req = browser.submit(), gửi biểu mẫu đầu tiên, phải không? – Parker

+1

tôi nghĩ rằng bạn nhận được mẫu đăng nhập thực sau khi gửi biểu mẫu chuyển hướng đầu tiên .. vì vậy có một biểu mẫu khác trong trang này? câu hỏi của bạn giống với tôi [câu hỏi này] (http://stackoverflow.com/questions/3901218/following-the-result-of-pressing-a-submit-button-in-python-mechanize), điều này rõ ràng là của bạn :) – mykhal

Trả lời

7

thử lại browser.select_form(nr=0) thay vì req.select_form(nr=0). (sau khi gửi hoặc nhấp vào liên kết, phản hồi mới được coi là trang trình duyệt thực tế - như trong trình duyệt :))

+0

Cảm ơn, một lần nữa, mykhal! – Parker

+0

@Parker không có vấn đề gì, tôi hy vọng nó đã hoạt động lần này – mykhal

+0

Đúng vậy, cảm ơn – Parker

Các vấn đề liên quan