こんばんは! SeleniumでAmazon Japanに自動ログインするコードを書いています。
しかし、「ログイン Eメールまたは電話番号」のページの「次へ進む」でエラーになります。
idがcontinueであることはデベロッパーツールで確認済みなのですが、どうやってこのエラーを解決したら良いのでしょうか。
よろしくお願いしますorz
エラー該当コード
driver.find_element_by_id("continue").send_keys(Keys.ENTER)
エラー文
Traceback (most recent call last): File "amazonLog.py", line 31, in <module> driver.find_element_by_id("continue").send_keys(Keys.ENTER) ... ... selenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element (Session info: chrome=69.0.3497.100) (Driver info: chromedriver=2.42.591071 (0b695ff80972cc1a65a5cd643186d2ae582cd4ac),platform=Linux 4.15.0-20-generic x86_64)
コード全体
# coding: UTF-8 from time import sleep from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys import warnings warnings.filterwarnings('ignore') if __name__ == '__main__': # URL関連 url = "https://tinyurl.com/y7rhjdzm" login = "Myemail" password = "MyPassword" # ヘッドレスモードの設定。 # True => ブラウザを描写しない。 # False => ブラウザを描写する。 options = Options() options.set_headless(False) # Chromeを起動 driver = webdriver.Chrome(executable_path="/home/ayumka/chromedriver", chrome_options=options) # ログインページを開く driver.get(url) # ログオン処理 # ユーザー名入力 driver.find_element_by_id("ap_email").send_keys(login) driver.find_element_by_id("continue").send_keys(Keys.ENTER) # ブラウザの描写が完了させるためにsleep sleep(10) # パスワード入力 driver.find_element_by_id("ap_password").send_keys(password) driver.find_element_by_id("signInSubmit").send_keys(Keys.ENTER) # soupオブジェクトを作成 soup = BeautifulSoup(driver.page_source, "lxml") # ログイン後のトップページのソースを表示 # print(soup) # ドライバーをクローズ # driver.close() driver.get('https://amzn.to/2PzZzes') print("ログイン成功")
できましたー(≧∇≦)b
reraNine様のアドバイスで、driver.find_element_by_id("continue").send_keys(Keys.ENTER)
をdriver.find_element_by_name('email').send_keys(Keys.TAB, Keys.ENTER)
に差し替えました!
完成コード
# coding: UTF-8 from time import sleep from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys import warnings warnings.filterwarnings('ignore') if __name__ == '__main__': # URL関連 url = "https://tinyurl.com/y7rhjdzm" login = "myu.yukiyanagi@gmail.com" password = "yukiyanagi311" # ヘッドレスモードの設定。 # True => ブラウザを描写しない。 # False => ブラウザを描写する。 options = Options() options.set_headless(False) # Chromeを起動 driver = webdriver.Chrome(executable_path="/home/ayumka/chromedriver", chrome_options=options) # ログインページを開く driver.get(url) # ログオン処理 # ユーザー名入力 driver.find_element_by_id("ap_email").send_keys(login) driver.find_element_by_name('email').send_keys(Keys.TAB, Keys.ENTER) # ブラウザの描写が完了させるためにsleep sleep(10) # パスワード入力 driver.find_element_by_id("ap_password").send_keys(password) driver.find_element_by_id("signInSubmit").send_keys(Keys.ENTER) # soupオブジェクトを作成 soup = BeautifulSoup(driver.page_source, "lxml") # ログイン後のトップページのソースを表示 # print(soup) # ドライバーをクローズ # driver.close() driver.get('https://amzn.to/2PzZzes') print("ログイン成功")
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/15 10:58
2018/10/16 00:40
2018/10/16 12:45