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

XML-XPath返回兄弟元素包含特定文本的元素

厍彭薄
2023-03-14

我试图找到正确的xpath表达式来选择包含特定文本的元素的父元素。

在下面的示例中,我希望选择文本匹配为“4”或任何其他数字的“span”元素,并且父元素与文本“Rooms”匹配:

我的XPath示例-匹配“div”元素中的每个“span”

//div/span[../span[包含(text(),'Rooms')]]

源代码

<div>
    <span>4</span>
    <span>Rooms</span>
    <span>and 2 suites</span>
</div>

我想要的是选择包含数字4的“span”元素作为文本,但html可能会更改,可能只有两个或一个“span”元素,如下例所示:

<div>
    <span>2 Rooms</span>
</div>

<div>
    <span>3</span>
    <span>Rooms</span>
</div>

共有2个答案

夏谦
2023-03-14

这个XPath

//span[contains(.," Rooms") or following-sibling::*[1][self::span]="Rooms"]

将选择字符串值包含“Rooms”或紧跟其后的span同级字符串值等于“Rooms”的span

子车俊材
2023-03-14

请尝试以下XPath-1.0表达式:

//div/span[contains(text(), 'Rooms')]/preceding-sibling::span[1] | div[count(span)=1 and contains(span/text(), 'Rooms')]/span

它将包含文本“Rooms”的spans的前面同级节点集与第一个span元素(如果它是唯一的一个)(count=1)合并。

结果是:

<span>4</span>
<span>2 Rooms</span>
<span>3</span>
 类似资料:
  • 使用以下json: 当请求id A时,返回值1的jsonpath是什么? 根据https://stackoverflow.com/a/47576707我可以检索包含以下内容的ids元素: or 与结果: 但是我想访问它的兄弟姐妹的值()。 提前谢谢!

  • 在XML文档中,例如: 如果任何元素包含'Text1'的内部文本,则返回Null集的单个XPath 1.0兼容、local-namespace()兼容的表达式是什么? 我尝试了许多不同的表达式,但无法获得返回空集的元素。 例如。 严格的要求是由于一个具体的实施。NET函数调用XmlNode.选择单节点方法(字符串) Dimitre提供的最终精确解

  • 问题内容: 如果我搜索单个字符串,则效果很好: 但是我可以在下面的示例中有一个 or 语句吗? 问题答案: 在两个函数调用之间说 或使用函数使xpath不区分大小写

  • 我试图定位页面上的特定元素,但无法找到要使用的适当Xpath。 以下是HTML(注意每个div的位置可能不同): 我可以通过以下操作(使用JAVA)成功定位标签: 并且我可以成功地定位第一个元素下的第一个输入(但我可能并不总是想要第一个元素): 所以问题是(i)输入的名称标记和值总是不同的,所以它们不能用来选择元素;(ii)带有姓氏标签的div可能不总是第二个;(iii)标签和span是同一级别的

  • 我正在寻求有关XPath选择器的帮助。我已经学习了XPath的基础知识,但是我很难将它们结合起来解决这个问题。 所以我有一个HTML格式的网格,包含大约30行,每行(从左到右)都有一个复选框和员工姓名。以下是行组成的一个片段: 我的目标是找到:div class=“ui grid row ng scope”data row num=“21” 到目前为止,我得到的是: 有人能帮我指一下正确的方向吗?

  • 我一直在为selenium Xpath定位器使用Contains函数。到目前为止,这个功能一直有效。它目前不适用于表中的TD元素。我正在向函数发送正确的文本,所以我不明白为什么。 在Chrome上,转到此处:https://rcpsc.releasecandidate-community360qa.net/login.aspx?action=enablelogin 登录:mj4/test 向下滚动