我使用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吗?
答案 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)