Python не возвращает текст из тега H3 - PullRequest
0 голосов
/ 03 марта 2020

Структура, на которую я смотрю, выглядит следующим образом

<div id="historyContainer">
    <div class id="offerHistory">
        <div class="theTitle">…</div>
        <br>
        <p>…</p>
        <br>
        <h3>Title</h3>
    </div>
</div>

Вот мой Python

offerHistory = browser.find_element_by_id('offerHistory')
title = offerHistory.find_elements_by_tag_name('h3')
print(title)

Это то, что печатает

[<selenium.webdriver.remote.webelement.WebElement (session="d7aef4eab17ec32e0280c1177b5016d9", element="eaf8e28e-9620-4e94-81a8-f7e13edc2c48")>]

Как напечатать «Заголовок»?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Вы были близки. Внутри родительского узла <div class id="offerHistory">:

<div class id="offerHistory">
    <div class="theTitle">…</div>
    <br>
    <p>…</p>
    <br>
    <h3>Title</h3>
</div>

Существует только один тег <h3>, который корректно возвращается:

title = offerHistory.find_elements_by_tag_name('h3')

Так, когда вы print(title), элемент печатается как:

[<selenium.webdriver.remote.webelement.WebElement (session="d7aef4eab17ec32e0280c1177b5016d9", element="eaf8e28e-9620-4e94-81a8-f7e13edc2c48")>]

В вашем сценарии использования вы хотите извлечь текст Заголовок из узла <h3>, и вы можете использовать любую из следующих Стратегий поиска :

  • Использование css_selector и get_attribute():

    print(driver.find_element_by_css_selector("div#offerHistory h3").get_attribute("innerHTML"))
    
  • Использование xpath и текст атрибут:

    print(driver.find_element_by_xpath("//div[@id='offerHistory']//h3").text)
    
0 голосов
/ 03 марта 2020

Добавить ".text":

title = browser.find_elements_by_tag_name('h3')
print(title.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...