当前位置: 首页 > 面试题库 >

xpath中的dot(。)如何在识别元素和匹配文本时采取多种形式

潘凯
2023-03-14
问题内容

我具有以下dom结构:

<h3 class="popover-title">
 <div class="popup-title">
   <div class="title-txt">Associated Elements&nbsp;&nbsp(5)</div>
 </div>
</h3>

我正在尝试编写一个xpath,它将在h3标签下标识标题“ Associated Elements”。

当我的xpath是

//div[contains(@class, popover)]//h3[contains(.,'Associated Elements')]

元素被识别。

但是当我的xpath是

//div[contains(@class, popover)]//h3[contains(text(),'Associated Elements')]

该元素未被识别。根据我的理解,dot(。)可以替代text(),但是为什么当我使用text()函数时却不能识别元素。

但是,对于另一个dom结构:

<h3 class="popover-title">
   <a class="btn-popover" href="#">x</a>
   "Associated Elements"
</h3>

xpath:

//div[contains(@class, popover)]//h3[contains(text(),'Associated Elements')]

//div[contains(@class, popover)]//h3[contains(.,'Associated Elements')]

工作良好。

有人可以解释这两种情况下dot(。)的行为吗?

有没有更好的方法来编写对两个示例都适用的xpath?请提出建议。


问题答案:

由于标记了硒,因此此答案将基于xpath-1.0和关联的XML路径语言(XPath)版本1.0规范。

包含(字符串,字符串)

boolean contains(string, string)如果第一个参数字符串包含第二个参数字符串,则该函数返回true,否则返回false。举个例子:

//h3[contains(.,'Associated Elements')]

文字节点

字符数据被分组为文本节点。将尽可能多的字符数据分组到每个文本节点中。文本节点的 字符串值
是字符数据。文本节点始终至少具有一个字符数据。在下面的示例中,text()选择上下文节点的所有文本节点子级:

//h3[text()='Associated Elements']

在用例中,HTML中的文本 关联的元素&NBSP(5) 具有 &nbsp;可以将可选地被称为 固定的空间硬空间NBSP(非换空间) 中的编程来创建的线的空间不能被打破使用通过自动换行。在HTML中,
&nbsp;您可以创建多个在网页上可见的空间,而不仅仅是在源代码中。

分析您的代码试用

您的第一次代码试用:

//h3[contains(.,'Associated Elements')]

在成功使用部分文本标识的元素时定位 元素

您的第二个代码试用版:

//h3[contains(text(),'Associated Elements')]

失败, 因为该元素包含一些其他字符,例如&nbsp;,除了文本 Associated Elements之外



 类似资料:
  • 我不确定这里的错误是什么。关于为什么链接是空的有什么想法吗?如何获得正确的节点?

  • 我使用Selenium WebDriver与Java。 下面是我的html代码: 我通过包含特定文本的xpath定义了一个WebElement。 它不起作用。但是,当我用一个词搜索时,没有任何空格,它工作正常。 这似乎是空间的问题。 请帮助。 蒂亚。

  • 如何获取属性中具有特定文本的跨度?我正在尝试提取文本“星星”后面的数字。那么我怎么能选择一个包含文本“rating_sprite星”的 span 标签,并且我希望从属性中提取值“star5”,以便我可以从文本中获取 5。 目前我没有收到任何元素! HTML代码段如下所示

  • 我在一个具有特定ID的div中使用javascript创建了一个SVG元素。我的主要目标是获得SVG图像,让用户下载它。 因此,我的想法可能是绝对错误的,是使用,获取子元素,这是我的SVG,然后执行以获取字符串并将其保存到某个位置。我可以看到元素,我知道它在那里,但当我从vaadin打印容器元素时,它没有任何子元素。 我的情况: 我从内容中得到什么,其中是我的DIV,ID: 我错过了什么? 如果这

  • 我正在尝试创建一个用户可以在浏览器中存储注释的应用程序。 为了弄清楚用户在文档中创建注释的位置,我正在尝试存储所选文本的xpath和偏移量。 我到处搜索过,似乎有很多从xPath字符串中检索元素的示例,但没有很好的从DOM元素中查找xPath的示例。 以下是我尝试过的: 其中getXPathForElement如下所示: 这段代码给出了一个很长的看起来很奇怪的文本,如下所示:(我认为这不是一个真正