Ошибка приема файлов cookie с Python / Selenium на www.instagram.com
Я пытаюсь с помощью 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 , но безуспешно.
Благодаря!
Мариоанзы
Ответы
Я тоже работал над этим, и мне пришлось немного бороться. Эта команда находит кнопку «Принять» во всплывающем окне файлов 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()