Получить текст из нескольких элементов с тем же классом в Selenium для Python?

Я пытаюсь очистить данные со страницы с загруженным JavaScript содержимым. Например, содержимое, которое я хочу, имеет следующий формат:

<span class="class">text</span>
...
<span class="class">more text</span>

Я использовал функцию find_element_by_xpath(//span[@class="class"]').text, но только вернул первый экземпляр указанного класса. В принципе, мне нужен список типа [text, more text] и т.д. Я нашел функцию find_elements_by_xpath(), но в конце .text в результате появляется ошибка exceptions.AttributeError: 'list' object has no attribute 'text'.

Ответ 1

find_element_by_xpath возвращает один элемент с атрибутом text.

find_elements_by_xpath() возвращает все соответствующие элементы, которые являются списком, поэтому вам нужно выполнить цикл и получить атрибут text для каждого элемента.

all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
    print span.text

Подробнее о find_elements_by_xpath(xpath) см. в документах Selenium Python API здесь.

Ответ 2

Это возвращает список элементов:

all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
    print span.text