IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Cliquer sur un bouton de cookies "Tout accepter" avec Selenium


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 22
    Points : 6
    Points
    6
    Par défaut Cliquer sur un bouton de cookies "Tout accepter" avec Selenium
    Bonjour.

    Je cherche à automatiser des actions avec Selenium en Python. Je dois aller sur un site, me connecter, aller dans un menu, faire une recherche nouvelle, et télécharger des documents.
    Comme mon site s'ouvre dans une nouvelle fenêtre à chaque fois, après la connexion avec mes codes (insérés dans le script) il y a toujours l'apparition d'un pop-up concernant les cookies.
    Je dois cliquer sur le bouton "Tout accepter".
    Mais je n'y arrive pas.

    J'ai déjà tapé une ligne précédemment pour cliquer sur le bouton "Me connecter" (juste avant d'entrer sur le site et que la page de cookies apparaisse) et ça fonctionne bien.


    Là j'ai fait "inspecter" sur Chrome pour voir un peu les noms, les id, et les classes liés aux boutons du pop-up de cookies, et j'ai fait des recherches avec driver.find.element selon ces 3 rubriques et ça ne trouve pas le bouton.

    Je ne sais pas si c'est parce qu'en réalité le bouton sur lequel je veux cliquer à un autre nom, ou si c'est parce qu'il apparaît quelques dixièmes de secondes après l'ouverture de la page alors que la recherche se lance immédiatement si j'ai bien compris. Peut-être que je devrais mettre un délai avant de lancer la recherche du bouton, mais je ne sais pas comment faire.

    A moins qu'il soit possible d'ouvrir le site dans un nouvel onglet et pas une nouvelle fenêtre ou Selenium ne permet pas cela ?

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Je viens d'essayer ça, et rien ne se passe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@title='Paramétrage de vos cookies']")))
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@title='Tout accepter']"))).click()
    EDIT : voici une autre info.
    Il y a un petit "V" comme quand on coche une case juste avant le "Tout accepter". C'est peut-être pour ça que ça ne reconnaît pas le bouton. Mais je ne vois pas comment modéliser ce symbole.

  3. #3
    Membre habitué
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 136
    Points : 198
    Points
    198
    Par défaut
    Salut,

    Ce n'est pas parce que le code marche pour un autre qu'il va marcher pour toi...
    Es-tu bien sur que le pop-up est bien une balise iframe avec comme titre "Paramétrage de vos cookies" et qu'il possède un bouton avec le titre "Tout accepter" ????

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 957
    Points : 9 297
    Points
    9 297
    Par défaut
    Hello,
    Citation Envoyé par nsl31 Voir le message
    Je cherche à automatiser des actions avec Selenium en Python. Je dois aller sur un site, me connecter, aller dans un menu, faire une recherche nouvelle, et télécharger des documents.
    Comme mon site s'ouvre dans une nouvelle fenêtre à chaque fois, après la connexion avec mes codes (insérés dans le script) il y a toujours l'apparition d'un pop-up concernant les cookies.
    Je dois cliquer sur le bouton "Tout accepter".
    Dans Selenium pour mémoriser les informations de navigation, il faut utiliser un profil du navigateur. Pour créer un profil dans un répertoire (il faut qu'il soit accessible en écriture) dans Selenium, par exemple pour Chrome ou Msedge il faut utiliser l'option --user-data-dir. On peut aussi se connecter au profil existant en indiquant dans quel répertoire se trouve le répertoire de données utilisateur ( user data directory)
    Pour chrome :
    Introduction
    The user data directory contains profile data such as history, bookmarks, and cookies, as well as other per-installation local state.
    Each profile is a subdirectory (often Default) within the user data directory.
    Current Location
    To determine the user data directory for a running Chrome instance:
    Navigate to chrome://version
    Look for the Profile Path field. This gives the path to the profile directory.
    The user data directory is the parent of the profile directory.
    Example (Windows):
    [Profile Path] C:\Users\Alice\AppData\Local\Google\Chrome\User Data\Default
    [User Data Dir] C:\Users\Alice\AppData\Local\Google\Chrome\User Data
    Exemple d'utilisation dans python selenium pour Chrome :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    options = Options()
    options.add_argument("--user-data-dir=D:\\Temp\\chrome") #Path to your chrome user data directory
    driver = webdriver.Chrome(options=options)
    Il ne faudra accepter les conditions sur un site qu'une fois manuellement , pour qu'ensuite on ne soit plus ennuyé par cette demande.


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Bonjour.

    Merci de votre réponse.

    J'ai appliqué ce que vous avez dit, et ça me demande toujours de cliquer sur "Tout accepter" à chaque fois que je lance le code.

    J'ai placé le morceau de code que vous m'avez donné à la fin de mon code, après la partie qui ouvre la page, qui met mes identifiants et qui clique sur "Se connecter".
    J'ai essayé de placer le morceau de code que vous m'avez donné ailleurs, ça perturbe les autres actions.

    J'ai évidemment remplacé le chemin d'accès par le mien.

    Et aussi, quand je lance mon programme, ça m'ouvre à chaque fois une nouvelle fenêtre Chrome avec aucune connexion à un compte Google. Il est juste marqué Personne1, ça n'a pas retenu les infos de connexion que j'avais mises sur Chrome précedamment. Est-ce à cause de cela que ça ne fonctionne pas ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    C'est bon ça fonctionne.
    Pour cela, j'ai ajouté un WebDriverWait.

Discussions similaires

  1. cliquer sur le bouton submit tout en appuyant sur le bouton entree
    Par supupoff dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/04/2010, 17h01
  2. cliquer sur un bouton pour tout selectionner dans une liste multiple
    Par PAYASS59 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/07/2007, 15h33
  3. cliquer sur un bouton seulement si on est membre
    Par leroidje dans le forum Langage
    Réponses: 3
    Dernier message: 09/11/2006, 06h46
  4. Réponses: 2
    Dernier message: 07/06/2006, 09h29
  5. cliquer sur un bouton d'une application extérieure
    Par looc 6699 dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 12/12/2005, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo