如何使用 Python 使用 Selenium 获取 <ul> 中的 <li> 元素列表?

How to get a list of the <li> elements in an <ul> with Selenium using Python?

我正在使用使用 Python 的 Selenium WebDriver 进行 UI 测试,我想检查以下内容 HTML:

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

我想从这个无序列表中遍历元素并检查其中的文本。我通过它的 id 选择了 ul 元素,但我找不到任何方法来遍历 Selenium 中的 <li>-children。

有人知道如何使用 Selenium(在 Python 中)遍历无序列表的 <li>-childeren 吗?

您需要使用.find_elements_by_方法。

例如,

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

您可以使用列表理解:

# 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)

奇怪的是,我不得不使用这个 get_attribute()-workaround 来查看内容:

html_list = driver.find_element_by_id("myId")
items = html_list.find_elements_by_tag_name("li")
for item in items:
    print(item.get_attribute("innerHTML"))