0
votes

sélénium en python. essayer de sélectionner l'élément

Mise à jour: j'ai découvert ce qui a causé la question dans mon poste d'origine, mais je ne sais pas comment résoudre. Voici encore plus de mon code. J'ai d'abord effectué une recherche, après quoi ma page de Firefox a sauté sur www.flickr.com/searc/?text=volleybal. Mais apparemment, mon objet de navigateur est toujours assis sur www.flickr.com. Comment puis-je le mettre à jour? XXX


POST D'ORIGINAL:

J'essaye avec le sélénium, et je souhaite sélectionner l'élément suivant:

  • J'ai essayé ce qui suit, mais aucun d'entre eux ne fonctionne:

    s = browser.find_element_by_class_name (" Bouton de style minimaliste ")

    s = browser.find_element_by_class_name ("style-bouton.minimaliste")

    s = browser.find_element_by_css_selector ("LI.Style -button.minimaliste ")

    s = browser.find_element_by_css_selector (". Style-bouton.minimaliste ")

    Comment puis-je sélectionner cet élément?


  • 2 commentaires

    Je pense que c'est probablement parce que vous regardez 2 noms de classe là-bas. Sélectionnez uniquement par "Bouton de style". "Bouton de style minimaliste" n'est pas une seule classe. Je ne suis pas un expert de sélénium, ce qui pourrait être faux. Si vous voulez seulement un élément, définissez un ID et utilisez recherche_element_by_id - je trouve que cela est plus clair habituellement


    Aucun d'entre eux ne fonctionne? Est-ce que ça jette une erreur?


    4 Réponses :


    0
    votes

    Vous pouvez essayer un XPath ici: xxx

    espère que cela aide un peu.


    1 commentaires

    Non, ça n'a pas fonctionné. J'ai aussi essayé: s = browser.find_element_by_xpath ("// Li [@ @ @ @ @ @ @ @ @ @ @ @ style-valeur-valeur = 'minimalisme']") mais toujours la même erreur: "Impossible de localiser l'élément".



    0
    votes

    résolu. Ajouté browser.refresh () après s.submit ()


    0 commentaires

    0
    votes

    La meilleure option consiste à utiliser absolu xpath em>. Pour ce bouton, il sera:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    browser = webdriver.Firefox()
    browser.get('https://www.flickr.com/')
    s = browser.find_element_by_id('search-field')
    s.send_keys('volleyball')
    s.submit()
    
    s = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[3]")))
    s.click()
    


    1 commentaires

    Pourquoi une xpath absolue est la solution ici? Ceux-ci peuvent être très fragiles et ne doivent pas être utilisés sauf si complètement nécessaires.



    0
    votes

    Votre code fonctionne parfaitement

    Essayez Télécharger la dernière version de GeckOriver pour votre utilisation d'OS et définissez votre exécutable_path

    Ça devrait aimer ce xxx

    et réessayer exécuté votre code amélioré


    0 commentaires