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? POST D'ORIGINAL: P> J'essaye avec le sélénium, et je souhaite sélectionner l'élément suivant: P> J'ai essayé ce qui suit, mais aucun d'entre eux ne fonctionne: p> Comment puis-je sélectionner cet élément? p> p>
s = browser.find_element_by_class_name (" Bouton de style minimaliste ") Code> p> s = browser.find_element_by_class_name ("style-bouton.minimaliste") code> p> s = browser.find_element_by_css_selector ("LI.Style -button.minimaliste ") code> p> s = browser.find_element_by_css_selector (". Style-bouton.minimaliste ") code> p>
4 Réponses :
Vous pouvez essayer un XPath ici: espère que cela aide un peu. p> p>
Non, ça n'a pas fonctionné. J'ai aussi essayé: s = browser.find_element_by_xpath ("// Li [@ @ @ @ @ @ @ @ @ @ @ @ style-valeur-valeur = 'minimalisme']") code> mais toujours la même erreur: "Impossible de localiser l'élément".
résolu. Ajouté browser.refresh () code> après s.submit () code> p>
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()
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.
Votre code fonctionne parfaitement
Essayez Télécharger la dernière version de GeckOriver pour votre utilisation d'OS et définissez votre Ça devrait aimer ce p> et réessayer exécuté votre code amélioré p> p> exécutable_path code> p>
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 code> et utilisezrecherche_element_by_id code> - je trouve que cela est plus clair habituellementAucun d'entre eux ne fonctionne? Est-ce que ça jette une erreur?