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

使用XPATH搜索包含以下内容的文本

邰博远
2023-03-14
问题内容

我使用XPather浏览器检查HTML页面上的XPATH表达式。

我的最终目标是在Selenium中使用这些表达式来测试用户界面。

我得到了一个HTML文件,其内容类似于以下内容:

<tr>
  <td> abc </ td>
  <td>&nbsp; </ td>
</ tr>

我想选择一个包含字符串“ &nbsp;” 的文本的节点。

使用“ abc”这样的普通字符串不会有问题。我使用类似于的XPATH //td[text()="abc"]

当我尝试使用类似的XPATH时,//td[text()="&nbsp;"]不会返回任何内容。关于带有“ &”的文本是否有特殊规定?


问题答案:

似乎Selenium背后的家伙OpenQA已经解决了这个问题。他们定义了一些变量以明确匹配空白。就我而言,我需要使用类似于的XPATH
//td[text()="${nbsp}"]

我在这里转载了来自OpenQA的有关此问题的文本(在此处找到):

HTML会自动规范元素内的空格,而忽略前导/尾随空格,并将多余的空格,制表符和换行符转换为单个空格。当Selenium从页面中读取文本时,它将尝试重复此行为,因此您可以忽略HTML中的所有选项卡和换行符,并根据呈现时文本在浏览器中的外观进行断言。为此,我们将所有不可见的空格(包括不间断空格“
&nbsp;”)替换为一个空格。所有可见的换行符(<br><p><pre>格式化的新行)都应保留。

我们对HTML Selenese测试用例表的文本使用相同的规范化逻辑。这具有许多优点。首先,您无需查看页面的HTML源代码即可确定您的断言应该是什么;“
&nbsp;”符号对于最终用户是不可见的,因此您在编写Selenese测试时不必担心它们。(您不需要&nbsp;在测试用例中放置标记,以将assertText包含在包含“
&nbsp;” 的字段上。)您还可以在Selenese <td>标记中添加额外的换行符和空格
;因为我们在测试用例上使用与在文本上相同的规范化逻辑,所以我们可以确保断言和提取的文本将完全匹配。

在极少数情况下,当您确实希望/需要在测试用例中插入额外的空格时,这会带来一些问题。例如,您可能需要在如下字段中输入文本:“ foo
”。但是,如果您只是<td>foo </td>在Selenese测试用例中编写代码,我们将仅用一个空格替换您的多余空格。

此问题有一个简单的解决方法。我们用Selenese定义了一个变量
${space},其值是一个空格。您可以使用${space}插入不会自动修剪的空间,如下所示:
<td>foo${space}${space}${space}</td>。我们还包含了一个变量${nbsp},您可以使用该变量
插入一个不间断的空格。

请注意,XPath 不会 像我们那样规范空格。如果您需要编写类似XPath的代码, //div[text()="hello world"]但链接的HTML确实是“ hello&nbsp;world”,则需要&nbsp;在Selenese测试用例中插入一个真实的“
”以使其匹配,例如: //div[text()="hello${nbsp}world"]



 类似资料:
  • 在java中与JackRabbit JCR一起工作让我头疼。这是一个xpath表达式,用于在我的存储库中搜索实体。 让我们简要介绍一下存储的是什么样的数据,我们有3个名为“Entry”的节点类,它扩展了另一个名为“BaseEntry”的节点类,并扩展了另一个名为“BaseNode”的节点类。Entry类代表我们的JCR系统中的一个节点,它有一组属性(映射为相应类中的属性),并且还继承映射到其超类中

  • 上面的XPath查询捕获了我正在查看的特定部分中的所有文本,这很棒。但是,我只需要知道testuser是否在那个部分。

  • 这是我的xpath: Selenium WebDriver代码忽略了上述xpath中::之后的所有内容。 下面是当我在上面使用xpath作为定位器来标识页面中的元素时,在selenium中遇到的错误。 关于如何让webdriver接受上面的整个xpath,有什么想法或建议吗? 下面是HTML代码: 以下是WebDriverJava代码: 元素是一个复选框,我试图通过应用方法来检查它。单击()。 下

  • 虽然这不是一个直接的开发问题,但它确实与一个开发工具有关,这与我的开发工作非常相关: 当我在 VSCode (CTRL P) 中搜索文件时,我发现它不包含作为 .gitignore 文件一部分的文件和文件夹。 我可以很好地理解其中的逻辑,这很好,但我如何禁用它(默认设置?)行为也就是说,我确实希望这个搜索包括项目中的所有文件,而不管是.gitignore文件(还是其他任何忽略文件)。

  • 我正在使用selenium在html页面上执行测试。我只能使用xpath来定位元素。我试图创建一个xpath,它允许我定位所有包含文本的div,这样我就可以用findElements保留这些WebElement的引用,不管它是什么,只要它不是空的。所以我有了这个xpath: //div[5]/div/div[2]

  • 这里有两个代码段,我正在使用它们从具有“From Date”和“To Date”的日历中搜索日期。 错误消息显示:线程“main”组织中出现异常。openqa。硒。NoSuchElementException:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“//table/tbody/tr/a[包含(text(),'十月三十日')]”“}