Python Selenium не может найти текст итеративных классов диапазона - PullRequest
2 голосов
/ 05 мая 2020

Невозможно напечатать «текстовый фрагмент».

Ожидаемый результат

Hello-World
Foo-Bar

Учитывая HTML Фрагмент:

<div class="information-container">
  <ul>
          <li class="info-item">
              <span class="info-text">
                     Hello-World

              </span>
          </li>
  </ul>
  <ul>
          <li class="info-item">
              <span class="info-text">

                      Foo-Bar

              </span>
          </li>
  </ul>
</div>

Мой синтаксический код (Метод 1):

page = self.browser.find_element_by_class_name("information-container")
for elem in page.find_elements_by_xpath('.//span[@class = "info-text"]'):
            print("E>", elem.text)
            attrs = self.browser.execute_script('var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;', elem)
            pprint(attrs)

Вывод (Метод 1):

E>
{'class': 'info-text'}
E>
{'class': 'info-text'}

Мой синтаксический код (Метод 2):

page = self.browser.find_element_by_class_name("information-container")
li_objs = page.find_elements_by_class_name('info-text')
for o in li_objs:
    print("text:", o.text)

Вывод (метод 2):

text:
text:

1 Ответ

0 голосов
/ 05 мая 2020

Текст из всех тегов диапазона на странице может быть отображен с использованием следующих символов

from selenium import webdriver

driver = webdriver.Firefox(executable_path = 'path_to_driver')
driver.get('path_to_site')

elements = driver.find_elements_by_tag_name('span')

for element in elements:
    text = element.text
    print(text)
...