www.instagram.comのPython / SeleniumでCookieエラーを受け入れる

Nov 16 2020

Firefoxを使用して、次のコードを使用してPythonSeleniumを使用してInstagramにログインしようとしています。

from time import sleep
from selenium import webdriver

browser = webdriver.Firefox()
browser.implicitly_wait(5)

browser.get('https://www.instagram.com/')
sleep(2)

username_input = browser.find_element_by_css_selector("input[name='username']")
password_input = browser.find_element_by_css_selector("input[name='password']")

username_input.send_keys("<your username>")
password_input.send_keys("<your password>")

login_button = browser.find_element_by_xpath("//button[@type='submit']")
login_button.click()

sleep(5)

browser.close()

実行するたびに、新しいWebブラウザウィンドウが正しく開き、ユーザー名とパスワードのエントリが入力されますが、最終的に次のエラーメッセージが表示されます。

ElementClickInterceptedException: Message: Element <button class="sqdOP  L3NKy   y3zKF     " type="submit"> is not clickable at point (844,327) because another element <div class="piCib"> obscures it

上記の私のコードが処理していないのは、Cookieの受け入れポップアップがあるためだと思います。ユーザー名とパスワードのフィールドが自動的に入力されたスクリーンショットを以下に示します。これらのCookieを自動的に受け入れる方法を知っている人はいますか?

PS私はPython / Seleniumで答えを試しました-www.instagram.comの[Cookieを受け入れる]ボタンをクリックできませんが、運がありません。

ありがとう!

マリオアンザ

回答

1 U_double_G Nov 29 2020 at 20:43

私もこれに取り組んでいて、少し苦労しました。このコマンドは、Cookieポップアップの[同意する]ボタンを見つけます。

find_element_by_xpath("//button[text()='Accept']")

ログイン後、さらに2つのポップアップが表示されます。1つはログイン情報を保存するため、もう1つはブラウザでの通知を許可するためです。「#notnow」の後の行も同じように処理されます

from time import sleep
from selenium import webdriver

browser = webdriver.Firefox()
browser.implicitly_wait(5)

browser.get('https://www.instagram.com/')

sleep(2)
# cookie 
cookie_button = browser.find_element_by_xpath("//button[text()='Accept']")
cookie_button.click()

username_input = browser.find_element_by_css_selector("input[name='username']")
password_input = browser.find_element_by_css_selector("input[name='password']")

username_input.send_keys("<your username>")
password_input.send_keys("<your password>")

login_button = browser.find_element_by_xpath("//button[@type='submit']")
login_button.click()

sleep(3)
# not now
save_login_info_button= browser.find_element_by_xpath("//button[text()='Not Now']")
save_login_info_button.click()
sleep(3)
notification_button= browser.find_element_by_xpath("//button[text()='Not Now']")
notification_button.click()

browser.close()