Как извлечь значение атрибута aria-label из элемента, найденного с помощью xpath, в соответствии с HTML с использованием Selenium - PullRequest
0 голосов
/ 24 августа 2018

У меня есть следующий диапазон 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")

но ничего не возвращает. Как извлечь текст «В отличие от» из элемента объекта?

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

aria-label является атрибутом элемента span, а не кнопки. Вы можете получить это так:

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)]')
0 голосов
/ 24 августа 2018

В соответствии с вашим вопросом и HTML , которым вы поделились, кажется, что элемент является элементом React , поэтому для получения атрибута aria-label youнеобходимо вызвать 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
...