首页 > 解决方案 > Python,Selenium Webdriver:我怎样才能找到这个属性的值?

问题描述

我正在编写一个 python 脚本,以使用 selenium Chrome webdriver 从网站获取一些数据。找到所需的元素对我来说效果很好 - 直到现在。现在我正在尝试获取广告 ID(“数据广告链接”的值。

<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:如何找到元素的所有属性?这只是给了我类、href 和 rel。

有谁知道我怎么能得到这个值?这对我有很大帮助!

我在 Python 上使用 Selenium (v 3.141.0)

标签: pythonseleniumselenium-webdriver

解决方案


要提取属性的值,data-ad-link344939582,您必须将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"))
    

推荐阅读