selenium - Selenium和xPath-通过包含文本来定位链接

标签 selenium xpath selenium-webdriver

我正在尝试使用xPath查找包含一段文本的元素,但是我无法使其正常工作...。

WebElement searchItemByText = driver.findElement(By.xpath("//*[@id='popover-search']/div/div/ul/li[1]/a/span[contains(text()='Some text')]"));

如果删除带有“contains”内容的最后一位,它将找到我的span元素,但是我需要根据文本内容进行选择。它也不是“某些文本”的完美匹配,因为它也可能包含截断的字符串。

有人看到这个问题吗?

最佳答案

我认为问题出在这里:

[contains(text()='Some text')]

为了解决这个问题,
  • []是一个条件,可在
    该节点集-您的情况下的每个span节点。它匹配是否运行任何单个节点
    符合括号内的条件。
  • text()是一个选择器
    与作为上下文子级的所有文本节点匹配
    node-返回一个节点集。
  • contains是一个可运行的函数
    在一个字符串上。如果传递了节点集,则该节点集为converted into a string by returning the string-value of the node in the node-set that is first in document order

  • 您应该尝试将其更改为
    [text()[contains(.,'Some text')]]
  • 外部[]是在每个单独节点上运行的条件
    在该节点集text()是一个匹配所有文本的选择器
    上下文节点的子节点-返回一个节点
    组。
  • 内部[]是一个条件,可在该条件下对每个节点进行操作
    节点集。
  • contains是对字符串进行操作的函数。在这里通过
    单个文本节点(.)。
  • 关于selenium - Selenium和xPath-通过包含文本来定位链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23078308/

    相关文章:

    java - Selenium |命名空间错误: Failed to execute 'evaluate' on 'Document' | Contains unresolvable namespaces

    PHPUnit 和 Selenium 以及从元素问题中获取值(value)

    javascript - 如何获取最后一个元素?

    java - 我如何在 xpath 中搜索单词并返回所需的 WebElement?

    python - 无效元素状态异常 : Message: invalid element state: Element is not currently interactable and may not be manipulated

    c# - Selenium:如何通过部分 href 查找元素?

    php - 在哪里可以找到有关text()xpath查询语法的一些官方文档?

    oracle - 通过xmltype理解解释计划

    php - DOMCrawler 纯文本

    selenium-webdriver - 如何使用 appium 在 android 混合应用程序上查找元素