繁体   English   中英

使用 Selenium Python 获取“data-label”属性

[英]Using Selenium Python to get “data-label” attribute

我有一张表,它用多个名称重新组合了多个data-label ,我尝试使用driver.get_elements_by_css_selector方法但它不起作用,这是我想从中获取值的 HTML:

<tbody>
 <tr>
   <td data-label="Player">Pierre-Emerick Aubameyang</td>
   <td data-label="Gross Weekly Wages">£250,000</td>
  </tr>
 <tr>
   <td data-label="Player">Willian</td>
   <td data-label="Gross Weekly Wages">£195,000</td>
 </tr>
  .
  .
  .
</tbody>

因为我有很多tr每个人都有玩家信息,所以我做了这段代码,但它不起作用。

elements = driver.find_elements(By.TAG_NAME, 'tr')
        for element in elements:
            player_info = element.find_elements(By.TAG_NAME, 'td')
            player_name = player_info[0].get_attribute('data-label')
            player_week_salary = player_info[1].get_attribute('data-label')

按selenium中的属性获取数据,使用方法:

element.get_attribute('you_attribute')

对于该示例,它应该如下所示:

elements = driver.find_elements(By.TAG_NAME, 'td')
attr = elements[0].get_attribute('data-label')
print(attr)

或通过链接使用已回答的问题: 如何从 Selenium 获取元素的属性?

您需要正确识别您的定位器。 在你的情况下 XPATH 定位器是: //tr/td[1]

driver.find_element_by_xpath("//tr/td[1]")

driver.find_element_by_xpath("//tr/td[2]")

对于第二个元素,依此类推。

您还可以使用 CSS 选择器。 阅读nth-of-type(1)以识别相似的定位器。 获取属性使用get_attribute方法。 尝试:

locator = driver.find_element_by_xpath("//tr/td[1]")
your_attribute = locator.get_attribute("data-label")

或者使用td:nth-of-type(1)td: nth-of-type(2)等等作为 CSS 定位器。 它看起来像这样:

driver.find_element_by_css_selector("td:nth-of-type(1)").get_attribute("data-label")

要通过 xpath 获取元素,您必须这样做。 到子元素。

elements = driver.find_elements(By.TAG_NAME, 'tr')
    for element in elements:
        player_name = element.find_element_by_xpath("./td[1]").get_attribute('data-label')
        player_week_salary = element.find_element_by_xpath("./td[2]").get_attribute('data-label')
        print(player_name,player_week_salary)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM