2010-10-18 2 views
6

У меня возникли проблемы с отправкой формы отправки (я могу отправить форму, но я не могу отправить форму на странице, которая следует за первой).Отправка формы в mechanize

у меня есть:

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.submit()' после 'browser.select_form (nr = 0)') – mykhal

+0

Нет, я установил req = browser.submit(), который отправляет первую форму, правильно? – Parker

+1

Я думал, что вы получили реальную регистрационную форму после отправки первой формы переадресации. Так что на этой странице есть другая форма? ваш вопрос похож на меня [этот] (http://stackoverflow.com/questions/3901218/following-the-result-of-pressing-a-submit-button-in-python-mechanize), который, очевидно, тоже ваш :) – mykhal

ответ

7

попытку browser.select_form(nr=0) вместо req.select_form(nr=0). (после отправки или нажатия ссылки или так, новый ответ считается фактической страницей браузера - например, в браузере :))

+0

Спасибо, опять же, mykhal! – Parker

+0

@Parker не проблема, я надеюсь, что он работал на этот раз – mykhal

+0

Да, это так, спасибо снова – Parker

Смежные вопросы