Python Selenium:TypeError:列表索引必须是整数或切片,而不是WebElement

时间:2019-01-28 19:15:22

标签: python python-3.x selenium selenium-webdriver gspread

你好,我正在尝试对不同元素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确实可以使循环正常工作。

1 个答案:

答案 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)