Partage
  • Partager sur Facebook
  • Partager sur Twitter

Selenium - page web

Cliquer sur le bouton d'une page

    21 décembre 2023 à 20:59:02

    Bonjour,

    J'utilise depuis peu Selenium, je suis bloqué sur un site où je n'arrive pas à cliquer sur le bouton. 

    En inspectant la page voici ce que je trouve

    J'ai donc chercher à cliquer sur le bouton via ce code

    button=driver.find_elements(By.CLASS_NAME,"dt-buttons d-flex align-items-center")
    button.click()

    J'obtiens l'erreur suivante : Traceback (most recent call last):

      File "D:\Pierre\Documents\Doc stocke D\Selenium_test.py", line 107, in <module>
        code(1,1,1)
      File "D:\Pierre\Documents\Doc stocke D\Selenium_test.py", line 97, in code
        button.click()
    AttributeError: 'list' object has no attribute 'click'

    Voici le résultat de l'inspection du site

    Auriez-vous une idée de la source du problème et comment je peux automatiser le clic sur ce bouton ?

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2023 à 21:42:06

      Salut,

      Je ne crois pas que le bouton, soit le <div>/<div>.

      Si vous appuyez sur la flèche, pour afficher ce qu'il y a dans le <div>, vous verrez probablement un <button>.

      Comme la 5e ligne à partir du bas de votre image. <button type="button" class="...">

      • Partager sur Facebook
      • Partager sur Twitter
        22 décembre 2023 à 10:59:22

        tu récupères une liste de bouton avec find_elements, donc l'erreur est logique: une liste n'a pas de fonction click

        mais un élément de la liste qui sera donc un bouton, disposera de cette fonction, donc button[0].click() devrait marcher si la liste n'est pas vide (et que le bouton qui t'intéresse est le 1er de ta liste

        • Partager sur Facebook
        • Partager sur Twitter
          22 décembre 2023 à 15:36:32

          J'ai essayé avec cette méthode, voici le code et l'erreur que j'ai eu 

          button=driver.find_elements(By.CLASS_NAME,"btn btn-lg btn-extra-border btn-primary btn-with-icon mt-4 mb-4")
          button.click()
          
          *** Remote Interpreter Reinitialized ***
          Traceback (most recent call last):
            File "D:\Pierre\Documents\Doc stocke D\Selenium_test.py", line 107, in <module>
              code(1,1,1)
            File "D:\Pierre\Documents\Doc stocke D\Selenium_test.py", line 97, in code
              button.click()
          AttributeError: 'list' object has no attribute 'click'
          >>>
          Savez-vous comment je peux repérer l'élément à cliquer ?
          Merci

          -
          Edité par PierreCONAN3 22 décembre 2023 à 15:39:15

          • Partager sur Facebook
          • Partager sur Twitter
            22 décembre 2023 à 17:09:02

            Salut,

            J'avais pas vue la fonction utilisé, puisque l'image est blanche sur blanche.

            Comme dit @umfred. La fonction find_elements vous donne une liste. 

            Faites un print, de la liste. Vous allez voir les éléments.

            button=driver.find_elements(By.CLASS_NAME,"btn btn-lg btn-extra-border btn-primary btn-with-icon mt-4 mb-4")
            button.click()
            # Affichez les éléments de la liste.
            print(button)
            
            
            # Si la liste n'est pas vide.
            if button:
                button[0].click() # Le premier élément de la liste. Il se peut qu'il en a plusieurs.
            

            À vous de voir.

            • Partager sur Facebook
            • Partager sur Twitter
              22 décembre 2023 à 17:36:53

              ça serait bien effectivement de lire les réponses que l'on donne .....

              nolimitech a écrit:

              Salut,

              J'avais pas vue la fonction utilisé, puisque l'image est blanche sur blanche.

              Comme dit @umfred. La fonction find_elements vous donne une liste. 

              Faites un print, de la liste. Vous allez voir les éléments.

              button=driver.find_elements(By.CLASS_NAME,"btn btn-lg btn-extra-border btn-primary btn-with-icon mt-4 mb-4")
              button.click()
              # Affichez les éléments de la liste.
              print(button)
              
              
              # Si la liste n'est pas vide.
              if button:
                  button[0].click() # Le premier élément de la liste. Il se peut qu'il en a plusieurs.
              

              À vous de voir.

              il faudra mettre la ligne 2 en commentaire si on ne veut pas avoir l'erreur resurgir avant d'afficher la liste :p

              -
              Edité par umfred 22 décembre 2023 à 17:37:07

              • Partager sur Facebook
              • Partager sur Twitter
                23 décembre 2023 à 2:52:27

                bah hahaha. ca m'apprendra à pas me relire :D 

                De plus, ca pourra lui servir d'exemple, apprendre à commenter une ligne :ange:

                • Partager sur Facebook
                • Partager sur Twitter
                  25 décembre 2023 à 18:42:02

                  Bonjour,

                  C'est ma réponse qui n'a pas été la bonne puisque j'avais déjà fait ce test d'afficher la liste. Cela me donne une liste vide que je mette l'argument

                  "dt-buttonsd-flexalign-items-center" ou "btn btn-lg btn-extra-border btn-primary btn-with-icon mt-4 mb-4"

                  Comment je peux repérer la ligne du code source de la page web à mettre en argument ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 janvier 2024 à 13:18:18

                    tu peux mettre le code qui précède le driver.find_elements(..) ? (voire le code complet)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Selenium - page web

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    • Editeur
                    • Markdown