如何根据使用Selenium的html从使用xpath找到的元素中检索属性aria-label的值

时间:2018-08-24 18:11:07

标签: python selenium selenium-webdriver webdriver getattribute

我有以下HTML范围:

<button class="coreSpriteHeartOpen oF4XW dCJp8">
    <span class="glyphsSpriteHeart__filled__24__red_5 u-__7" aria-label="Unlike"></span>
</button>

我还有一个webElement代表包含使用xpath找到的该跨度的按钮。如何从元素中检索aria-label值(与其他值不同)?

我试图做:

btn = drive.find_element(By.xpath, "xpath") 
btn.get_attribute("aria-label")

,但不返回任何内容。如何从元素对象中检索文本“ Unlike”?

4 个答案:

答案 0 :(得分:2)

aria-label是span元素的属性,而不是button。 您可以这样获得它:

btn = drive.find_element(By.xpath, "xpath") 
aria_label = btn.find_element_by_css_selector('span').get_attribute("aria-label")

或者,如果您的目标是查找具有范围包含属性aria-label="Unlike"的按钮:

btn = drive.find_element(By.XPATH, '//button[./span[@aria-label="Unlike"]]')
#you can add class to xpath also if you need
btn = drive.find_element(By.XPATH, '//button[./span[@aria-label="Unlike"] and contains(@class,"coreSpriteHeartOpen)]')

答案 1 :(得分:1)

以下内容在Java中为我服务,

maximum

答案 2 :(得分:0)

根据您的问题和您共享的 HTML ,该元素似乎是React元素,因此要检索属性 aria-label 必须使用 WebDriverWait 使所需的元素可见,并且您可以使用以下解决方案:

print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "element_xpath_you_found"))).get_attribute("aria-label"))

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

答案 3 :(得分:0)

# Like method
lov = el.find_element_by_class_name('glyphsSpriteHeart__outline__24__grey_9').click()  

# Unlike method
lov = el.find_element_by_class_name('glyphsSpriteHeart__filled__24__red_5').click() 

我改用这些方法,而且有效!