2016-04-02 7 views
0

私はmechanizeを使って次のフォームにログインしようとしました。PYTHON Mechanizeログインフォームクラス

<div class="container"> 
    <form class="form-signin" id="form_login"> 
     <h2 class="form-signin-heading"><center>GReAT Sinkhole Database</center></h2> 
     <div id="form_login_error_box" class="form_error_box"></div> 
     <label for="form_username" class="sr-only">Username</label> 
     <input type="text" id="form_username" class="form-control" placeholder="Username" required autofocus> 
     <label for="form_password" class="sr-only">Password</label> 
     <input type="password" id="form_password" class="form-control" placeholder="Password" required> 

     <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button> 
    </form> 
</div> 

MechanizeのブラウザMethodes br.submit()br.click()は私のフォームを提出しなかったと私はHTMLが望んで取得しませんでした。ここで

はどうあるべきかのコード

browser.select_form(nr = 0) 
browser.form.set_value(login_user, nr=0) 
browser.form.set_value(Loginpwd, nr=1) 
ff = browser.submit() 
print " title ##" + str(browser.title()) 
print ff.read() 

のですか?

+0

はたぶん間違ったフォームを選択した効果がないように見えた魔女でこの問題を解決しましたか?あなたは、ページのリンクまたは完全なHTMLを提供できますか? –

+0

これは、少なくとも私に制御名エラーを与えるだろう場合 –

答えて

2

<form>要素には、methodまたはaction属性がありません。

メソッドがないフォームのデフォルトの動作は、GETリクエストを介して送信することです。アクションが定義されていないため、ページのURLに送信されます(HTML仕様では、アクションが定義されている)。ログインフォームがこのように動作することはほとんどありません。

このフォームはjavascriptで送信され、Mechanizeを使用してアクセスすることはできません。

0

私はちょうどform.submitが

datat = {'username': 'ADMIN','password':'ADMIN'} 
#Encode the parameters 
data = urllib.urlencode(datat) 
#Submit the form (POST request). 
print "POST" 
browser.open(post_url,data) 
print "POSTED" 
print browser.open(url_to_get).read() 
関連する問題