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

时间:2015-02-09 16:54:56

标签: python html selenium selenium-webdriver gui-testing

我使用Selenium WebDriver使用Python进行UI测试,我想查看以下HTML:

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

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

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

4 个答案:

答案 0 :(得分:15)

您需要使用.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

答案 1 :(得分:1)

您可以使用列表理解:

# 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

答案 2 :(得分:1)

奇怪的是,为了查看内容,我不得不使用此get_attribute()-解决方法:

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

答案 3 :(得分:0)

列表中包含类似类型的数据。可以使用网络抓取 API 获取有序和无序列表数据,例如 proxycrawl 或其他包含预编码抓取功能的类似 API,您可以像任何常规 API 一样轻松地将这些功能嵌入到您的代码中,并获得所需的输出。使用 selenium python,你可以使用下面提到的代码。

<块引用>

源代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import time

driver = webdriver.Chrome()
wait = WebDriverWait(driver,26)
driver.get('https://ca.iherb.com/pr/Life-Extension-BioActive-Complete-B-Complex-60-Vegetarian-Capsules/67051')
html_list = driver.find_element_by_id("product-specs-list")
items = html_list.find_elements_by_tag_name("li")
for item in items:
  text = item.text
print(text)