web-dev-qa-db-fra.com

Comment obtenir une liste des éléments <li> dans un <ul> avec Selenium en utilisant Python?

J'utilise Selenium WebDriver en utilisant Python pour les tests d'interface utilisateur et je souhaite vérifier le code HTML suivant:

<ul id="myId">
    <li>Something here</li>
    <li>And here</li>
    <li>Even more here</li>
</ul>

À partir de cette liste non ordonnée, je souhaite parcourir les éléments et en vérifier le texte. J'ai sélectionné l'élément ul par sa id, mais je ne trouve aucun moyen de boucler sur les enfants <li>- dans Selenium.

Est-ce que quelqu'un sait comment vous pouvez faire une boucle sur le <li>- childeren d'une liste non ordonnée avec Selenium (en Python)?

7
kramer65

Vous devez utiliser la méthode .find_elements_by_.

Par exemple,

html_list = self.driver.find_element_by_id("myId")
items = html_list.find_elements_by_tag_name("li")
for item in items:
    text = item.text
    print text
15
Mark Rowlands

Vous pouvez utiliser la compréhension de liste:

# Get text from all elements
text_contents = [el.text for el in driver.find_elements_by_xpath("//ul[@id='myId']/li")]
# Print text
for text in text_contents:
    print text
1
German Petrov