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 le bouton "Tout accepter" ou "I agree" avec Selenium/firefox [Python 3.X]


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut Cliquer sur le bouton "Tout accepter" ou "I agree" avec Selenium/firefox
    Bonjour tout le monde,

    Alors je vous explique mon problème j'ai mis au point un script qui va sur un site plusieurs fois durant le traitement de celui-ci.
    À chaque ouverture de fenêtre je dois faire appuyez sur le bouton "I agree" il n'y a pas un moyen de le faire qu'une seule fois durant tout le traitement ???

    Je vous remercie par avance pour l'aide.

    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut !

    Et si tu fais refresh ?

  3. #3
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut
    Merci pour ta réponse.

    Je suis pas sur de comprendre.

    Parce qu'en fait je vais à chaque fois sur une page différente mais du même site, donc je ne comprend pas l'idée du refresh (qui consiste à rafraichir la même page si je ne me trompe pas).

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans ce cas hormis automatiser le clic sur le bouton "I agree" je ne sais pas...

    J'imagine que tu sais faire en sorte de cliquer sur un bouton avec Selenium ?


    PS : Il y a peut-être moyen de rajouter des cookies mais ça dépasse mes maigres connaissances en la matière.
    Dernière modification par Invité ; 06/11/2022 à 22h59.

  5. #5
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut
    Oui voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
        driver = webdriver.Firefox()
     
        driver.get(url)
     
        ok_1 = True
     
        while not ok_1:
            try:
                bouton_dispo = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME,
                                                                                          'fc-primary-button')))
            except:
               ok_1 = False
               print("CA NE PASSE PASS PEC")
                driver.close()
                driver = webdriver.Firefox()
                driver.get(url)
            else:
                bouton_dispo.click()
                ok_1 = True
     
        lien_source = driver.find_element(by=By.CLASS_NAME, value='scan-page')
        url_dl = lien_source.get_attribute("src")
     
        ok = True
        try:
            driver.switch_to.window(driver.window_handles[1])
        except:
            pass
        else:
            driver.close()
            driver.switch_to.window(driver.window_handles[0])
           driver.close()
           ok = False
     
        if ok:
            driver.close()

  6. #6
    Invité
    Invité(e)
    Par défaut
    Utilise la balise [CODE ] ou le bouton # pour poster ton code.

    En attendant la réponse d'une personne plus compétente, peut-être regarder du côté des cookies : https://stackoverflow.com/questions/...nium-webdriver

  7. #7
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut
    Je vais voir ça, en tout cas Merci à toi ^^
    Bonne soirée

  8. #8
    Membre averti
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Février 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Février 2016
    Messages : 20
    Par défaut
    Salut,

    Tu peux ajouter un cookie et ensuite rafraîchir ou changer de page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    driver.get(url)
    driver.add_cookie({"name" : "ici", "value" : "et là"})
    # Les valeurs peuvent être récupérées dans le moniteur réseau de Firefox
    Sinon, t'as une réponse juste en dessous dans les discussions similaires:
    https://www.developpez.net/forums/d2.../#post11843280

  9. #9
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut
    Salut ,

    Merci pour la réponse quant au lien que tu a mis justement c'est avec Chrome, moi je suis sur Firefox et j'ai pas réussi avec ce qu'ils ont dit

    il faudrait mettre quoi dans "name" et "value" et aussi comment je peux affiché les codes proprement comme tu viens de faire désolé je suis nouveau sur le site

    et par la suite il faudrait que je supprime le cookie en question une fois que tout mon traitement est fait

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Utilise la balise [CODE ] ou le bouton # pour poster ton code.

  11. #11
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut
    Arigato LeNarvalo

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 211
    Par défaut
    Hello,
    pour la gestion automatique des cookies , cache, historique, il faut utiliser un "profile".
    Pour sélenium , il suffit de désigner quel répertoire va servir à contenir les fichiers du "profile".
    Exemple pour FireFox( le répertoire est un répertoire linux) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fp = webdriver.FirefoxProfile('/home/gabriel/.mozilla/firefox/whatever.selenium')
    driver = webdriver.Firefox(fp)
    et voici un exemple sous windows en utilisant le "profile" courant de l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     fp = webdriver.FirefoxProfile('C:/Users/x/AppData/Roaming/Mozilla/Firefox/Profiles/some-long-string')
    driver = webdriver.Firefox(firefox_profile=fp)
    Ami calmant, J.P

  13. #13
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut
    Salut et Merci JurassicPork,

    je viens de tester ça et je reçois ça comme message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/selemium.py:9: DeprecationWarning: firefox_profile has been deprecated, please use an Options object
      fp = webdriver.FirefoxProfile('/Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/Repertoire')
    /Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/SCRAP_HEDEM_SCAN_FR_V4/selemium.py:10: DeprecationWarning: firefox_profile has been deprecated, please pass in an Options object
      driver = webdriver.Firefox(fp)

  14. #14

  15. #15
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut
    Salut Le narvallo comment va ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    profile_path = '/Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/Repertoire.selenium'
    options = Options()
    options.set_preference('profile', profile_path)
    driver = webdriver.Firefox(options=options)
    J'ai rajouté ça et rien ne ce produit xD à chaque ouverture de page il faut cliquer il y a quelque chose qui m'échappe ...
    Mais le code tourne déja c'est bon signe ^^

  16. #16
    Invité
    Invité(e)
    Par défaut
    Salut !

    Je ne serais pas d'une plus grande aide aujourd'hui qu'hier malheureusement...

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 211
    Par défaut
    Hello,
    il est vrai que j'utilisais Selenium 3 et depuis Selenium 4 , il y a pas mal de choses qui ont changé.
    Voici un exemple d'utilisation de selenium 4 avex FireFox sous Windows 11 avec l'utilisation d'options (profile et localisation de l'exécutable Firefox) et du service (localisation du driver selenium firefox).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.firefox.service import Service
    options = Options()
    options.add_argument("-profile")
    options.add_argument(r'C:\Users\user\AppData\Roaming\Mozilla\Firefox\Profiles\dlr1203ltt.default-release')
    options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
    s=Service('D:/Dev/WebDrivers/geckodriver.exe')
    driver = webdriver.Firefox(service=s, options=options)
    driver.implicitly_wait(8)
    url = 'https://www.developpez.net/forums/f1155/autres-langages/python/general-python/'
    driver.get(url)
    titres = driver.find_elements(By.XPATH,"//h3[@class='threadtitle']")
    for titre in titres:
        print(titre.text)
    driver.quit()
    Le code liste les titres du forum Python/Général Python de developpez.net
    Voici le début de ce que l'on obtient :
    Important : [Actualité] [Tutoriel] Python, de zéro - Un cours complet pour apprendre la programmation Python
    Important : [Actualité] [Python 3.X] [Exercices] Sélection des meilleurs exercices corrigés pour apprendre la programmation Python
    Important : Sondage : [Actualité] Quels sont vos frameworks Web Python préférés en 2018 ? Pourquoi ? Partagez vos avis
    Important : [Actualité] Publication du livre "Pensez en Python - Comment maîtriser la science de l'informatique" en français
    Important : [Actualité] Les meilleurs cours et tutoriels pour apprendre la programmation Python
    Important : [Actualité] La rubrique Python fait sa rentrée des classes
    Important : À lire avant de poster : règles et documentation
    [Python 3.X] Lire valeur tableau excel pandas sur input()
    [Actualité] Des dizaines de paquets PyPI malveillants ciblant les développeurs ont été découverts
    Conversion d'une base de données
    [Python 3.X] Cliquer sur le bouton "Tout accepter" ou "I agree" avec Selenium/firefox
    [Actualité] Python 3.11 serait 3 fois plus rapide que la version 3.8 du langage
    Création variable automatique
    Ami calmant, J.P

  18. #18
    Membre averti
    Homme Profil pro
    michelet
    Inscrit en
    Novembre 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : michelet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 14
    Par défaut
    Merci beaucoup à vous deux ^^

    Le problème ici jurassic c'est que j'ai un mac , et donc la manière de procéder n'est pas la même malheureusement

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 211
    Par défaut
    Hello,
    Citation Envoyé par Laythe Voir le message
    Le problème ici jurassic c'est que j'ai un mac , et donc la manière de procéder n'est pas la même malheureusement
    Avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.firefox.service import Service
    options = Options()
    options.add_argument("-profile")
    options.add_argument('/Users/xxx/Library/Application Support/Firefox/Profiles/jhfgn7bj.default-release')
    s=Service('/Users/xxx/Library/geckodriver')
    driver = webdriver.Firefox(service=s, options=options)
    driver.implicitly_wait(8)
    url = 'https://www.developpez.net/forums/f1155/autres-langages/python/general-python/'
    driver.get(url)
    titres = driver.find_elements(By.XPATH,"//h3[@class='threadtitle']")
    for titre in titres:
        print(titre.text)
    driver.quit()
    voici ce que j'obtiens sur mon Mac "virtuel" catalina 10.15 :
    Nom : RecupTitres.png
Affichages : 825
Taille : 80,0 Ko

    je ne sais pas où est installé le gecko driver sur ton mac, dans un premier temps tu peux mettre en commentaire la ligne avec Service et ne pas passer le paramètre service dans la ligne en dessous.

    Ami calmant, J.P

  20. #20
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 538
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 538
    Par défaut
    Je pense qu'il n'y a pas forcément besoin de savoir où se trouve le geckodriver si on passe par le code suivant (il faut installer le module webdriver-manager ( https://pypi.org/project/webdriver-m...e-with-firefox )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from selenium import webdriver
    from selenium.webdriver.firefox.service
    import Service as FirefoxService
    from webdriver_manager.firefox
    import GeckoDriverManager
    s=FirefoxService(GeckoDriverManager().install())
    driver = webdriver.Firefox(service=s)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Python 3.X] Cliquer sur un bouton de cookies "Tout accepter" avec Selenium
    Par nsl31 dans le forum Général Python
    Réponses: 5
    Dernier message: 17/05/2022, 11h46
  2. 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
  3. 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
  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