【问题标题】:Retrieving aria-label value using Selenium's find function使用 Selenium 的 find 函数检索 aria-label 值
【发布时间】:2020-01-05 08:19:53
【问题描述】:

我有网站上某个元素的 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。

【问题讨论】:

    标签: python python-3.x selenium xpath


    【解决方案1】:

    click()没有返回值,也就是说它返回None,这使得first_revNone,将其拆分为两个动作。你也不需要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)
    

    【讨论】:

    • 很遗憾,使用这个方法还是返回None。
    • @AcePash 如果get_attribute("aria-label") 返回None 则表示该元素没有此属性。要获得更多帮助,您需要发布相关的 html。
    • 我刚刚将元素的html添加到帖子中。
    • @AcePash 如果您执行first_rev.get_attribute("aria-label") 会发生什么?我猜first_rev 是你想要的元素,通过first_rev.find_element 你实际上得到了它的子元素。
    • 天啊,是的,它奏效了。有时,简单更好。谢谢,first_rev.get_attribute("aria-label") 给出了答案。
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 2019-01-31
    • 2020-05-09
    • 2021-12-04
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2014-05-13
    相关资源
    最近更新 更多