2017-12-19 20 views
0

Seleniumを使用してPython経由でウェブサイトにログインする際に問題があります。セレンログインの送信エラー

私はウェブスクレイピングを初めて使いました。学習プロセスの一環として、American AirlinesのPythonを使用して自分のアカウントアクティビティをスクラップしようとしています。これにはログインが必要です。これは私のコード(下記参照)が失敗するところです。フォームフィールドはすべて入力されますが、送信すると、ページが更新されてエントリが消去されたように見えます。私が行ってきた

チェック:

  • ログイン情報が正しいです。私は手動でログインしました。
  • 私は睡眠時間のために異なる長さで遊んだことがあります。成功しません。
  • 入力前にクリアされたフォーム。成功しません
  • submit()行までのコードを実行し、手動で[ログイン]ボタンをクリックします。それでもログインは失敗します。これは、フィールドが何らかの形で正しく配置されていないと思うようになりますが、どこに問題があるのか​​わかりません。

ありがとうございました!

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Chrome() 
driver.get("https://www.aa.com/homePage.do") 

loginId = driver.find_element_by_name("loginId") 
lastName = driver.find_element_by_name("lastName") 
password = driver.find_element_by_name("password") 

time.sleep(2) 
loginId.send_keys("my-email-here") 
lastName.send_keys("my-last-name-here") 
password.send_keys("my-password-here") 
time.sleep(2) 
password.submit() 
+1

入力フィールドで 'submit()'の代わりにフォームのsubmitボタンで 'click()'を使ってみましたか? –

+0

フォームがどのくらい速く埋められているかに悩まされている可能性があるJavaScriptの要素があるかもしれません。それぞれのフィールドにキーを送信しながら何か2秒間スリープさせてみてください。違いがある場合は、何が起こっているのかを明示的に確認する必要があります。 – mrfreester

+0

@EvyatarMegedはい、まだ運がありません。 – narks

答えて

1

私はAAと他の航空会社が使用すると、ページがログインするために戻って移動させる、DOM内の要素を検索し、操作するために、セレンを使用している知っている洗練されたボット検出を持っていると信じています。 Webページ上の

driver.find() 

、それが失敗したフィールドを自分で記入し、私はちょうど行う場合:私はない場合でも、その後

driver.get('https://www.aa.com') 

、それは私がすることができますフィールドに必要事項を記入します持続する。私はいくつかの検索を行う場合、これを超えているGoogleとredditのいくつかの記事を発見した。また、Can a website detect when you are using selenium with chromedriver?は、彼らがそれをやっているかもしれないいくつかの方法を超えています。

+0

私は同様の考えを持っていた、私はこれはかなり良いテストだと思う。良いキャッチ。 – mrfreester

+0

私は同じことを考え始めました。航空会社はユーザーフレンドリーではなくなりません。リンクをありがとう、私たちはこれを答えと呼ぶでしょう。 – narks

関連する問題