当前位置: 首页 > 知识库问答 >
问题:

如何在xpath中使用contains查找aria标签元素

宣瀚
2023-03-14

我试图获取锚标记中的信息,但不是href。我想从易趣上的几个卖家那里提取评级分数。在以下超文本标记语言代码中,您可以看到评级分数的位置。有没有一种方法可以不使用href,因为href从卖方更改为卖方而获得关于"BewerTungspunkteski"(德语的评级分数)的信息?这个例子中的评分是32。因为文本“BewerTungspunkteski”只在这一行,我想可以让它搜索这段文本,并提取带有这段文本的咏叹调标签。

这是指向此示例的链接。

这是我尝试过但没有成功的Python代码:

try: 
    trans = driver.find_element_by_xpath("//a[@aria-label='Bewertungspunktestand']")
except:
    trans = '0'

这是HTML代码

<span class="mbg-l">
    (<a href="http://feedback.ebay.de/ws/eBayISAPI.dll?ViewFeedback&amp;userid=thuanhtran&amp;iid=133585540546&amp;ssPageName=VIP:feedback&amp;ftab=FeedbackAsSeller&amp;rt=nc&amp;_trksid=p2047675.l2560" aria-label="Bewertungspunktestand: 32">32</a>
    <span class="vi-mbgds3-bkImg  vi-mbgds3-fb10-49" aria-label="Gelber Stern für 10 bis 49 Bewertungspunkte" role="img"></span>)
</span>

共有2个答案

钱锦
2023-03-14

aria-tag属性的值不是BewerTungspunktestance,而是BewerTungspunkteski: 32。

要从innerHTML打印值,即32,可以使用以下任一定位器策略:

>

  • 使用css\u选择器和文本属性:

    driver.get('https://www.ebay.de/itm/Apple-MacBook-Pro-15-Laptop-mit-Touchbar-512GB-MPTT2D-A-Wie-neu/133585540546?nordt=true&nma=true&orig_cvip=true')
    print(driver.find_element_by_css_selector("a[aria-label^='Bewertungspunktestand']").text)
    

    使用xpathget\u attribute()

    driver.get('https://www.ebay.de/itm/Apple-MacBook-Pro-15-Laptop-mit-Touchbar-512GB-MPTT2D-A-Wie-neu/133585540546?nordt=true&nma=true&orig_cvip=true')     
    print(driver.find_element_by_xpath("//a[starts-with(@aria-label, 'Bewertungspunktestand')]").get_attribute("innerHTML"))
    

    理想情况下,您需要为位于()的元素的可见性引入WebDriverWait,并且您可以使用以下任一定位器策略:

    >

  • 使用CSS_SELECTORget_attribute()

    driver.get('https://www.ebay.de/itm/Apple-MacBook-Pro-15-Laptop-mit-Touchbar-512GB-MPTT2D-A-Wie-neu/133585540546?nordt=true&nma=true&orig_cvip=true')
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a[aria-label^='Bewertungspunktestand']"))).get_attribute("innerHTML"))
    

    使用XPATH和文本属性:

    driver.get('https://www.ebay.de/itm/Apple-MacBook-Pro-15-Laptop-mit-Touchbar-512GB-MPTT2D-A-Wie-neu/133585540546?nordt=true&nma=true&orig_cvip=true')
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[starts-with(@aria-label, 'Bewertungspunktestand')]"))).text)
    

    控制台输出:

    MyMercy User
    

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

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

    您可以找到有关如何使用Selenium-Python检索WebElement文本的相关讨论

    链接到有用的文档:

    • get\u attribute()method获取元素的给定属性或属性

  • 曾嘉言
    2023-03-14

    当然可以。使用XPATH的contains方法,并结合选择任何属性(@aria label)的能力:

    //a[contains(@aria-label, 'Bewertungspunktestand:')]
    

    具体到获取链接元素的文本值:

    trans = driver.find_element_by_xpath("//a[contains(@aria-label, 'Bewertungspunktestand:')]").text
    
     类似资料:
    • 我一直在为selenium Xpath定位器使用Contains函数。到目前为止,这个功能一直有效。它目前不适用于表中的TD元素。我正在向函数发送正确的文本,所以我不明白为什么。 在Chrome上,转到此处:https://rcpsc.releasecandidate-community360qa.net/login.aspx?action=enablelogin 登录:mj4/test 向下滚动

    • 问题内容: 我需要在我的xpath表达式中使用撇号(’),这需要使用webdriver查找元素 我需要使用下面的Xpath表达式 在查找元素功能中使用上述表达式时,我用单引号替换了双引号 问题答案: 使用如下所示的xpath: 希望这可以帮助。

    • 我一直在为这个selenium项目苦苦挣扎,一直在寻找与这个问题略有关联的老参考资料或帖子。我承认我不熟悉xpath和selenium,所以希望它可以像修复语法一样简单。我正在使用python 3.6。卢本图19.10上的9,如果这有什么区别的话。 我试图访问的html元素: 我尝试过的代码: 尝试不同的XPath时出现的错误消息: 我检查了火狐来尝试捕获xpath,显示为: 虽然我还不确定如何调

    • 非常感谢您的帮助。 我想知道firebug复制xpath是否总是适用于webdriver。 我有一个带有列表的页面,我可以获得完整的xpath来查找前两个元素,但无法对3、4执行相同的操作。 对于第三个,它不起作用: 错误: org.openqa.selenium.NoSuchElementException:无法定位元素:{"method":"xpath","selector":"/html/b

    • 问题内容: 在我的网页中,有一个名为的。 我如何找到它? 问题答案: 此选择器应该可以工作,但是如果您用合适的标记替换它,效率会更高: 或者,由于我们知道所搜索的元素是: 但是,因为这也可以匹配诸如或的情况,所以注释中提供的@Tomalak版本 更好 : 如果您真的想确定它可以正确匹配,则还可以使用normalize-space函数清除类名周围的杂散空格字符(如@Terry所述): 请注意,在所有

    • 我尝试获取标题中包含一些单词的链接,但不包含一些单词,我使用以下代码,但它表示这不是有效的XPath表达式。 请在此处找到我的代码: 任何帮助将不胜感激!