Aceptando el error de cookies con Python / Selenium en www.instagram.com

Nov 16 2020

Estoy intentando, usando Firefox, iniciar sesión en Instagram usando Python Selenium usando el siguiente código:

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

Cada vez que lo ejecuto, abre correctamente una nueva ventana del navegador web, completa las entradas de nombre de usuario y contraseña pero, al final, aparece el siguiente mensaje de error:

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

Creo que es debido al hecho de que hay una ventana emergente de aceptación de cookies que mi código anterior no está tratando. A continuación se puede ver una captura de pantalla con los campos de nombre de usuario y contraseña completados automáticamente. ¿Alguien sabe cómo aceptar estas cookies automáticamente?

PD: He probado la respuesta en Python / Selenium: no puedo hacer clic en el botón "Aceptar cookies" en www.instagram.com , pero no tuve suerte.

¡Gracias!

Marioanzas

Respuestas

1 U_double_G Nov 29 2020 at 20:43

Yo también estaba trabajando en esto y tuve un poco de lucha. Este comando encuentra el botón "Aceptar" en la ventana emergente de cookies:

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

Después de iniciar sesión, aparecen 2 ventanas emergentes más: 1 para guardar la información de inicio de sesión, 1 para permitir notificaciones en el navegador. Las líneas después de "#not now" se encargan de ellos de la misma manera

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