Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème séléctionner un élément avec Sélénium

Sujet résolu
    12 octobre 2023 à 21:35:54

    Bonjour à tous,

    Je viens de découvrir Sélénium et j'essaye de faire un petit programme permettant de se connecter à Duolingo et de lancer une leçon en Python.

    J'ai réussi à me connecter pour l'instant. Voici mon code :

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    email_or_username  = input("Enter your email or username: ")
    password = input("Enter your password: ")
    
    driver = webdriver.Chrome()
    driver.get('https://www.duolingo.com/')
    
    assert "Duolingo" in driver.title
    
    accept_cookies_button = driver.find_element(By.ID, 'onetrust-accept-btn-handler')
    accept_cookies_button.click()
    
    del(accept_cookies_button)
    
    i_already_have_an_account_button = driver.find_element(By.XPATH, '//button[@data-test="have-account"]')
    i_already_have_an_account_button.click()
    
    del(i_already_have_an_account_button)
    
    email_or_username_input = driver.find_element(By.XPATH, '//input[@data-test="email-input"]')
    password_input = driver.find_element(By.XPATH, '//input[@data-test="password-input"]')
    
    email_or_username_input.send_keys(email_or_username)
    password_input.send_keys(password)
    
    del(email_or_username_input, password_input)
    
    log_in_button = driver.find_element(By.XPATH, '//button[@data-test="register-button"]')
    log_in_button.click()
    
    del(log_in_button)

    Mais maintenant que je suis sur la page d'accueil :

    Je veux clicker sur le bouton "commencer".

    J'ai recherché dans le html et j'ai trouvé le bouton correspondant :

    Pour séléctionner l'élément, j'ai écris :

    start_new_lesson_button = driver.find_element(By.XPATH, '//button[@data-test="skill-path-level-2 skill-path-level-skill"]')

    Mais j'ai cette erreur qui me dit "NoSuchElementException" :

    J'ai pourtant vérifié au moins dix fois...

    Traceback (most recent call last):
      File "/media/prog/73D1-E28B/duolingo-bot/main.py", line 37, in <module>
        start_new_lesson_button = driver.find_element(By.XPATH, '//button[@data-test="skill-path-level-2 skill-path-level-skill"]')
      File "/home/prog/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 738, in find_element
        return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
      File "/home/prog/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 344, in execute
        self.error_handler.check_response(response)
      File "/home/prog/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//button[@data-test="skill-path-level-2 skill-path-level-skill"]"}
      (Session info: chrome=115.0.5790.170); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    Stacktrace:
    #0 0x55df2bf53c43 <unknown>
    #1 0x55df2bc903f7 <unknown>
    #2 0x55df2bccdf6b <unknown>
    #3 0x55df2bcce061 <unknown>
    #4 0x55df2bd08a44 <unknown>
    #5 0x55df2bcee5bd <unknown>
    #6 0x55df2bd0663c <unknown>
    #7 0x55df2bcee363 <unknown>
    #8 0x55df2bcc27c2 <unknown>
    #9 0x55df2bcc356e <unknown>
    #10 0x55df2bf1922d <unknown>
    #11 0x55df2bf1df83 <unknown>
    #12 0x55df2bf27388 <unknown>
    #13 0x55df2bf1e9aa <unknown>
    #14 0x55df2beeee5e <unknown>
    #15 0x55df2bf3f538 <unknown>
    #16 0x55df2bf3f6df <unknown>
    #17 0x55df2bf4df09 <unknown>
    #18 0x7f427e4f2609 start_thread

    Quelqu'un pourrait-il m'aider s'il vous plait ?

    Merci d'avance pour vos réponses.



    -
    Edité par Tim240 13 octobre 2023 à 8:07:24

    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2023 à 0:36:49

      Bonjour,

      Déplacement vers un forum plus approprié

      Le sujet est déplacé de la section Discussions développement vers la section Langage Python

      • Partager sur Facebook
      • Partager sur Twitter
        13 octobre 2023 à 10:12:49

        Il faudrait nous remettre tes captures écrans qui ne sont pas passé.
        • Partager sur Facebook
        • Partager sur Twitter
          13 octobre 2023 à 16:04:20

          umfred a écrit:

          Il faudrait nous remettre tes captures écrans qui ne sont pas passé.


          Salut umfred.

          Encore merci pour tes réponses.

          J'ai l'impression que tu as commenté presque tous mes problèmes sur ce forum depuis que je suis sur OpenClassrooms !

          Pour ce qui est du problème, je l'ai résolu tout seul.

          La page n'était juste pas chargée lorsque je recherchais le bouton.

          J'ai donc mis un petit time.sleep() de 5 secondes.

          • Partager sur Facebook
          • Partager sur Twitter

          Problème séléctionner un élément avec Sélénium

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown