Python Selenium: TypeError: индексы списка должны быть целыми или кусочками, а не WebElement - PullRequest
0 голосов
/ 28 января 2019

Здравствуйте. Я пытаюсь выполнить цикл for для различных элементов tr, каждый из которых содержит 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?

Мне нужно немногосправка.

РЕДАКТИРОВАТЬ в состоянии "для", использование диапазона (len (линии)) вместо строк делает цикл работающим правильно.

1 Ответ

0 голосов
/ 28 января 2019

как только у вас есть все строки:

rows = driver.find_elements_by_xpath("//[@id='DataTables_Table_0']/tbody/tr")

... просто переберите их и найдите в них тд:

for row in rows:
    elem = row.find_element_by_tag_name('td')
    print(elem.text)
...