你好,我正在尝试对不同元素tr执行一个for循环,当每个元素都带有要提取信息的td时,执行循环时,它返回错误:TypeError:列表索引必须为整数或切片,不是WebElement
lines = driver.find_elements_by_xpath("//[@id='DataTables_Table_0']/tbody/tr")
for x in lines:
Date = driver.find_elements_by_class_name("Date")
record.acell(getNextRow(), Date[x].text)
# The error is here ^^^
Country = driver.find_element_by_class_name("Country")
record.acell(getNextRow(), Country[x].text)
League = driver.find_element_by_class_name("Region")
record.acell(getNextRow(), League[x].text)
HomeT = driver.find_elements_by_class_name("CompanyY")
record.acell(getNextRow(), HomeT[x].text)
VisitT = driver.find_element_by_class_name("CompanyV")
record.acell(getNextRow(), Visit[x].text)
这会给我以下错误消息:TypeError: list indices must be integers or slices, not WebElement
如何在每个tr中执行循环并提取td信息?
我需要一些帮助。
编辑 在“ for”语句中,使用range(len(lines))而不是lines确实可以使循环正常工作。
答案 0 :(得分:1)
一旦您拥有所有行:
rows = driver.find_elements_by_xpath("//[@id='DataTables_Table_0']/tbody/tr")
...只需遍历它们并找到其中包含的td:
for row in rows:
elem = row.find_element_by_tag_name('td')
print(elem.text)