2
votes

Python Selenium: avoir des difficultés à corriger NoSuchElementException pour un bouton spécifique

J'essaye d'appuyer sur un bouton avec du sélénium en python. Je ne parviens pas à le localiser avec xpath ou css selector.

Pour le reste du script, j'utilise xpath et cela fonctionne bien, mais xpath de ce bouton semble être relatif à chaque fois que je l'ouvre. Par conséquent, j'ai essayé d'accéder est avec le sélecteur css.

L'élément auquel j'essaie d'accéder ressemble à ceci:

# This opens up the window in which to press the next button (works fine)
button = driver.find_element_by_xpath('//*[@id="content"]/div[1]/section/div[2]/button')
button.click()
driver.implicitly_wait(15)
time.sleep(5)
# This is what doesn't work
driver.find_element_by_class_name('button.btn.btn-primary-pull-right').click()

Le sélecteur css d'inspect dans chrome:

#\35 d167939-adc2-0901-34ea-406e6c26e1ab > div.modal-footer > div > button.btn.btn-primary.pull-right
  • driver.find_element_by_class_name ('# \ 35 d167939-adc2-0901-34ea-406e6c26e1ab.div.modal-footer.div.button.btn.btn-primary.pull-rightdiv.button.btn .btn-primary-pull-right '). click ()

  • driver.find_element_by_class_name('div.button.btn.btn-primary-pull-right').click()

  • driver.find_element_by_class_name('button.btn.btn-primary-pull-right').click()

  • driver.find_element_by_class_name('btn.btn-primary-pull-right').click()

  • driver.find_element_by_class_name('btn-primary-pull-right').click()

  • J'ai également essayé une minuterie de mise en veille.

    Le bouton se trouve dans une fenêtre qui s'ouvre lorsque vous appuyez sur le bouton précédent, avec l'arrière-plan grisé, si cela vous aide. Image .

    <button type="button" data-dismiss="modal" class="btn btn-primary pull-right">Opret AnnonceAgent</button>
    

    J'attends que le programme presse le bouton et ce n'est pas le cas, il reste juste là.


    7 commentaires

    Essayez cela pour voir si cela fonctionne driver.find_element_by_css_selector ('button.btn.btn-primary.‌ pull-right'). Click ()


    Merci, mais ne fonctionne toujours pas. J'obtiens AttributeError: l'objet 'list' n'a pas d'attribut 'click' , en supposant que c'est un élément - était-ce intentionnel?


    c'était typo.try encore driver.find_element_by_css_selector ('button.btn.btn-primary.‌ pull-right'). click ()


    Ne fonctionne pas, j'obtiens NoSuchElementException


    Pouvez-vous vérifier s'il y a un cadre qui bloque pour localiser le bouton?


    S'il s'agit d'un lien public, pouvez-vous partager l'URL pour vérifier ce qui ne va pas?


    Ce n'est pas le cas, car vous devez être connecté. Vérifiez-le cependant - vous pouvez voir comment il se trouve dans une autre div, est-ce que je devrais en tenir compte? Image . Edit: j'ai mis en évidence le bouton et la chose qu'il contient.


    3 Réponses :


    0
    votes

    class_name reçoit une classe en tant que paramètre, mais vous utilisez la syntaxe css comme localisateur.

    Avec css_selector

    XXX

    Ce qui signifie balise avec 2 classes, btn et btn-primary-pull-right

    Avec class_name

    driver.find_element_by_class_name('btn-primary-pull-right')
    


    4 commentaires

    @BertilJohannesIpsen Veuillez préciser. Qu'est-il exactement arrivé?


    Bon, désolé! J'ai eu la même exception, le NoSuchElementException: Message: aucun élément de ce type: Impossible de localiser l'élément: {"method": "class name", "selector": "btn-primary-pull-right"} , et de même pour l'autre.


    @BertilJohannesIpsen Essayez d'ajouter attente explicite . Vous devez également vérifier si le bouton est dans

    Articles qui pourrait vous intéresser :

    Python: ConnectionError: HTTPSConnectionPool (hôte = 'api.foursquare-com', port = 443)
    L'exécution de Flask sous Windows n'exécute pas la commande d'exécution de flask
    Chatbot installé mais obtention d'une erreur lors de l'importation de ChatBot
    Administrateur Django: __str__ a renvoyé une non-chaîne (type int)