我有以下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")
但它什么也没返回。如何检索元素的文本值 使用元素对象的"aria-label"属性?
aria-label
是span元素的属性,而不是按钮。 你可以这样得到它:
btn = drive.find_element(By.xpath, "xpath")
aria_label = btn.find_element_by_css_selector('span').get_attribute("aria-label")
或者,如果您的目标是查找具有span包含属性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)]')
以下在 Java 中为我工作,
WebElement btnelement= driver.findElement(
By.xpath("//span[@aria-label='Unlike']"));
System.out.println("Attribute value is " + btnelement.getAttribute("value"));
根据您的问题和您共享的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
# 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()
我改用了这些方法,它奏效了!
如果 xpath 看起来很复杂,您可以使用类名检索它并使用 get_attribute 方法访问它。
value = driver.find_element(By.CLASS_NAME, 'glyphsSpriteHeart__filled__24__red_5 u-__7')
output = value.get_attribute("aria-label")