2017-01-08 16 views
1

私はSelenium + Python 2.7スタックを使用しています。
thisフォーラムにログインし、学術研究目的の投稿データをクロールします。私はログインフォームを記入するために次のコードを使用しています:Seleniumを使用してログインできません

username = browser.find_element_by_xpath("//input[@id='navbar_username']") 
    username.clear() 
    username.send_keys("####") 
    password = browser.find_element_by_xpath("//input[@id='navbar_password_hint']") 
    password.clear() 
    password.send_keys("####") 
    loginbutton = browser.find_element_by_xpath("//input[@class='loginbutton']") 
    loginbutton.click() 

しかし、私はクローラーが実行されているときにログインすることができません。それは間違ったユーザー名/パスワードのページに私を連れて行っています。同じ情報を使って手動でログインしようとしましたが、何のエラーもなくログインできました。クローラーを実行している間、ユーザー名とパスワードのフィールドに正しい値が入力されます。私はこの問題の原因を理解できません。 どんな助力もありがとうございます。

+0

'Selenium'をインタラクティブに使用し、Pythonとしてコードをエクスポートするのが最も簡単です。結果(作業中の)コードを見ると、元のコードが失敗した理由を知ることでしょう。 – boardrider

答えて

1

パスワードフィールドに間違った要素があるようです。この要素があるように、ターゲット要素が隠されていると、あなたはそれが見えるように次を使用することができますtype="text"

ですtype="password"<input id="navbar_password_hint">ながら、あなたは

password = browser.find_element_by_xpath("//input[@id='navbar_password']") 

を試してみてください:この種類のに直面

browser.execute_script('document.getElementById("navbar_password").style.display="block";') 
+0

私もそれを試みましたが、tatフィールドが隠されているので、そのフィールドを 'send_keys()'できませんでした。私はフォームをチェックし、submitでusernameとnavbar_passwordのフィールドエントリのハッシュをしています。あなたはpython seleniumで隠された入力テキストフィールドを埋める方法を知っていますか? – tortuga

+0

更新された回答を確認してください – Andersson

+0

あなたの更新された回答スクリプトはフィールドを表示させ、パスワードの値を対応するフィールドに送信できます。しかし、それはまだ私にログイン時にエラーを与えます、私はまた、 "form.submit()"スタイルメソッドを試しましたが、成功しませんでした。 – tortuga

関連する問題