2010-10-18 259 views
6

我在提交表單提交的結果問題提交表單(我可以提交一個表單,但我不能提交下面的第一頁上的表格)。在機械化

我:

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

這工作,因爲print req導致

`

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

`

但我得到的錯誤,當我嘗試使用req.select_form(nr=0)

我想這可能是沿着如何從submit()機械化回報的對象行的東西,並且我要對這個錯誤的方式。

任何輸入或指導,將不勝感激:)

+1

你沒忘了提交此第一種形式,獲得登錄表單 - (在瀏覽器:)比如說提交或點擊一個鏈接或打完,新的響應被認爲是一個實際的瀏覽器頁面)? (browser.select_form(nr = 0)''後的'browser.submit()') – mykhal 2010-10-18 02:52:48

+0

不,我設置req = browser.submit(),它提交第一個表單,對不對? – Parker 2010-10-18 02:54:09

+1

我以爲你在提交第一個重定向表單之後得到真正的登錄表單..所以在這個頁面中有另一個表單?你的問題類似於我[這一個](http://stackoverflow.com/questions/3901218/following-the-result-of-pressing-a-submit-button-in-python-mechanize),這顯然也是你們的:) – mykhal 2010-10-18 02:56:23

回答

7

嘗試再次browser.select_form(nr=0)代替req.select_form(nr=0)

+0

再次感謝,mykhal! – Parker 2010-10-18 03:34:17

+0

@帕克沒有問題,我希望這次能工作 – mykhal 2010-10-18 03:36:18

+0

是的,它的確如此,再次感謝 – Parker 2010-10-18 14:08:31