Перебирайте теги внутри тегов в Selenium / Python - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь использовать селен, чтобы просмотреть список свойств на веб-странице и вернуть адрес свойства и время аукциона. У меня есть следующий код Python и HTML для веб-страницы ниже.

Я могу вернуть ссылки на каждое свойство в списке, но не вижу, чтобы он возвращал нужные мне значения из тегов "H4". Я думаю, что я делаю что-то не так с получением элементов с помощью Xpath, но я не могу понять это.

Любая помощь будет принята с благодарностью!

HTML:

<div data-elem-id="asset_list_content">
    <a href="/details/123-memory-lane">
        <div data-elm-id="asset_2352111_address" class="styles__address-container--2l39p styles__u-mr-1--3qZyj">
            <h4 data-elm-id="asset_2352111_address_content_1" class="styles__asset-font-big--vQU7K">123 memory-lane</h4>
            <label data-elm-id="asset_2352111_address_content_2" class="styles__asset-font-small--2JgrX">POWDER SPRINGS, GA 30127, Cobb County</label>
        </div>
        <div class="styles__auction-container--45DZU styles__u-ml-1--34mF_">
            <h4 data-elm-id="asset_2352111_auction_date" class="styles__asset-font-big--vQU7K">Apr 04, 10:00am</h4>
        </div>
    </a>
    <a href="/details/456-memory-lane">
        <div data-elm-id="asset_8463157_address" class="styles__address-container--2l39p styles__u-mr-1--3qZyj">
            <h4 data-elm-id="asset_8463157_address_content_1" class="styles__asset-font-big--vQU7K">456 memory-lane</h4>
            <label data-elm-id="asset_8463157_address_content_2" class="styles__asset-font-small--2JgrX">POWDER SPRINGS, GA 30127, Cobb County</label>
        </div>
        <div class="styles__auction-container--45DZU styles__u-ml-1--34mF_">
            <h4 data-elm-id="asset_8463157_auction_date" class="styles__asset-font-big--vQU7K">March 10, 10:00am</h4>
        </div>
    </a>
</div>

Python (Selenium):

propertyList = browser.find_elements_by_xpath('//div[@data-elm-id="asset_list_content"]')

for element in propertyList:
    propertyLinks = element.find_elements_by_tag_name('a')
    for propertyLink in propertyLinks:
        propertyAddress = propertyLink.get_element_by_xpath('//h4[1]')
        propertyAuctionTime = propertyLink.get_element_by_xpath('//h4[2]')
        print(propertyAddress).text
        print(propertyAuctionTime).text

Выход:

propertyAddress = propertyLink.get_element_by_xpath('//h4[1]')
AttributeError: 'WebElement' object has no attribute 'get_element_by_xpath'

1 Ответ

1 голос
/ 23 октября 2019

Ошибка, кажется, вы используете get_element_by_xpath(), который не является допустимым методом. Вы использовали find_elements_by_xpath() в своем коде до этого момента, и для поиска искомых элементов вам просто нужно использовать метод, который находит только один элемент: find_element_by_xpath().

...