Python, Selenium Webdriver: Как я могу найти значение этого атрибута? - PullRequest
1 голос
/ 16 февраля 2020

Я работаю над сценарием python, чтобы получить данные с веб-сайта с помощью селена Chrome webdriver. Поиск необходимых элементов работал хорошо для меня - до сих пор. Сейчас я пытаюсь получить рекламный идентификатор (значение «data-ad-link».

<div class="header w-brk" style="overflow-wrap: break-word;">
        <a href="/iad/immobilien/d/eigentumswohnung/wien/wien-1010-innere-stadt/am-werdertor-etages-de-luxe-344939582/" class="" data-ad-link="344939582">
            <span itemprop="name">
                AM WERDERTOR - ÉTAGES DE LUXE
            </span>
        </a>
    </div>

Из этого сегмента HTML мне понадобится значение data-ad-link. Я попытался решить эту проблему, используя

elem = driver.find_elements_by_xpath("//*[@class='']")
for i in range(count):
    #uniqueid = elem[i].get_attribute('data-ad-link')
    #uniqueid = driver.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[i])
    print(uniqueid)

. В моем отладчике я вижу, что создание списка работает хорошо, но получение значения - нет. Поэтому я уже попробовал element.get_attribute, который вернул None ( также для href!). Я попытался driver.execute_script, который я нашел здесь: Selenium webdriver: Как мне найти ВСЕ атрибуты элемента? , который просто дает мне class, href и rel.

Кто-нибудь знает, как я могу получить это значение? Это очень мне поможет!

Я использую Selenium (v 3.141.0) на Python

1 Ответ

0 голосов
/ 16 февраля 2020

Чтобы извлечь значение атрибута data-ad-link, т. Е. 344939582 , вам нужно вызвать WebDriverWait для требуемого visibility_of_element_located(), и вы можете использовать следующую Стратегию локатора :

  • Использование XPATH:

    print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='header w-brk']/a[starts-with(@href, '/iad/immobilien/d/eigentumswohnung/wien/wien-')]/span[@itemprop='name' and normalize-space()='AM WERDERTOR - ÉTAGES DE LUXE']/.."))).get_attribute("data-ad-link"))
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...