Erreur d'acceptation des cookies avec Python / Selenium sur www.instagram.com

Nov 16 2020

J'essaie, en utilisant Firefox, de me connecter à Instagram en utilisant Python Selenium en utilisant le code suivant:

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

Chaque fois que je l'exécute, il ouvre correctement une nouvelle fenêtre de navigateur Web, remplit les entrées de nom d'utilisateur et de mot de passe mais, à la fin, j'obtiens le message d'erreur suivant:

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

Je pense que c'est dû au fait qu'il existe une fenêtre contextuelle d'acceptation des cookies que mon code ci-dessus ne traite pas. Une capture d'écran avec les champs de nom d'utilisateur et de mot de passe remplis automatiquement peut être vue ci-dessous. Quelqu'un sait-il accepter automatiquement ces cookies?

PS J'ai essayé la réponse en Python / Selenium - Je ne peux pas cliquer sur le bouton 'Accepter les cookies' sur www.instagram.com , mais sans chance.

Merci!

Marioanzas

Réponses

1 U_double_G Nov 29 2020 at 20:43

Je travaillais là-dessus aussi et j'ai eu un peu de mal. Cette commande trouve le bouton "Accepter" dans la fenêtre contextuelle des cookies:

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

Après la connexion, il affiche 2 autres fenêtres contextuelles: 1 pour enregistrer les informations de connexion, 1 pour autoriser les notifications sur le navigateur. Les lignes après "#not now" les traitent de la même manière

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