Ошибка приема файлов cookie с Python / Selenium на www.instagram.com

Nov 16 2020

Я пытаюсь с помощью Firefox войти в Instagram с помощью Python Selenium, используя следующий код:

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()

Каждый раз, когда я запускаю его, он правильно открывает новое окно веб-браузера, заполняет поля имени пользователя и пароля, но, в конце концов, я получаю следующее сообщение об ошибке:

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 - не могу нажать кнопку «Принять файлы cookie» на www.instagram.com , но безуспешно.

Благодаря!

Мариоанзы

Ответы

1 U_double_G Nov 29 2020 at 20:43

Я тоже работал над этим, и мне пришлось немного бороться. Эта команда находит кнопку «Принять» во всплывающем окне файлов cookie:

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

После входа в систему появляется еще 2 всплывающих окна: 1 для сохранения информации журнала, 1 для разрешения уведомлений в браузере. Строки после "# not now" обрабатывают их таким же образом.

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()