首页 > 解决方案 > 使用 Selenium 的 find 函数检索 aria-label 值

问题描述

我在网站上有一个元素的 xpath,但我正在尝试获取该元素的 aria-label 值。

    # NO SUCCESS: print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "element_xpath_you_found"))).get_attribute("aria-label"))
    # NO SUCCESS: first_rev = browser.find_element(By.xpath, "/html/body/span/g-lightbox/div[2]/div[3]/span/div/div/div/div[2]/div[1]/div/div[2]/div[1]/div[1]/div[3]/div[1]/g-review-stars/span")
    
    first_rev = browser.find_element_by_xpath("/html/body/span/g-lightbox/div[2]/div[3]/span/div/div/div/div[2]/div[1]/div/div[2]/div[1]/div[1]/div[3]/div[1]/g-review-stars/span").click()
    aria_label = first_rev.find_element_by_css_selector('span').get_attribute("aria-label")
    print(aria_label)

在浏览器上,我检查元素并获取此 html:

<span class="fTKmHE99XE4__star fTKmHE99XE4__star-s" aria-label="Rated 3.0 out of 5," style=""><span style="width:42px"></span></span>

但是,问题可能是该元素位于页面的弹出窗口内吗?页面源不显示弹出窗口中任何元素的任何 html。

标签: pythonpython-3.xseleniumxpath

解决方案


click()没有返回值,这意味着它返回None,这使得first_rev None,将它分成两个动作。你也不需要first_rev.find_element,你实际上得到了它的子元素

first_rev = browser.find_element_by_xpath("/html/body/span/g-lightbox/div[2]/div[3]/span/div/div/div/div[2]/div[1]/div/div[2]/div[1]/div[1]/div[3]/div[1]/g-review-stars/span")
first_rev.click()
aria_label = first_rev.get_attribute("aria-label")
print(aria_label)

推荐阅读