【发布时间】:2019-03-26 11:13:48
【问题描述】:
我在使用 xpath 从代码中选择确切的文本“部分”时遇到问题。
** 需要明确的是,如果可能的话,我需要从元素的 innerText 或 innerHTML 中进行准确的文本选择,而不是 id。 **
我可以使用包含文本功能,但这会导致包含“Section”的其他部分匹配也被返回/突出显示:
//div[@aria-hidden='false']//ul/li[contains(text(),'Section')]
我尝试过使用以下方法,但我不知道我的语法是否正确,因为没有返回/突出显示:
//div[@aria-hidden='false']//ul/li[text()='Section')]
//div[@aria-hidden='false']//ul/li[.='Section']
//div[@aria-hidden='false']//ul/li[normalize-space(.)='Section']
这是检查 Section 节点时显示的内容:
<li id="GOS--/40" class="nodecollapsed item parent-node xh-highlight" style="" xpath="1">
Section <span class="child-count"></span>
</li>
这是元素属性中显示的内容:
id: "GOS--/40"
innerHTML: "↵ Section <span class="child-count"></span>↵ "
innerText: " Section "
这是显示返回的其他部分匹配的 xml:
<div class="selection-list-dialog modal-dialog Dialog">
<div class="modal-content">
<div class="modal-header SectionHeader">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<span class="modal-title" data-lang="StandardItems">Standard Items</span>
</div>
<div class="modal-body selection-list-container" style="margin-top: 30px" id="base">
<div>
<span data-lang="SelectItemInstructions">Select the items you are interested in from the list.</span>
</div>
<br/>
<div class="pull-left selection-tree-container">
<h4 class="selection-list-title">
<span data-lang="Available">Available</span>
</h4>
<ul class="selection-list selection-tree-list">
<li id="CS--/14" class="nodecollapsed item parent-node">
Country Section <span class="child-count"></span>
</li>
<li id="Sec1--/23" class="nodecollapsed item parent-node">
Section 1 <span class="child-count"></span>
</li>
<li id="Sec2--/24" class="nodecollapsed item parent-node">
Section 2 <span class="child-count"></span>
</li>
<li id="GOS--/40" class="nodecollapsed item parent-node">
Section <span class="child-count"></span>
</li>
<li id="RS--/43" class="nodecollapsed item parent-node">
Regional Section <span class="child-count"></span>
</li>
【问题讨论】:
-
由于值文本的格式很重,您可以使用 starts-with 或 contains xpath 属性。
-
选择确切的文本'Section'是什么意思?您是否尝试提取文本 Section?
-
我已经在使用 contains 并返回多个选项,这就是问题所在。从我不确定如何在上面使用开始,它什么也没返回。你能举个例子吗?
-
@DebanjanB 我需要精确的文本,因为在使用包含功能时还有其他部分匹配,而我需要精确匹配才能单击它。我在我的问题中添加了一些进一步的信息
-
@JackFleeting 不幸的是,它并不总是相同的必需项,或者我可以将其硬编码并使用 id。我是一名测试人员,我们通过 csv 将数据传递到 Selenium Webdriver。随着后台数据的定期更新,这些数据可能会发生变化,并且我们有不同版本的数据可以通过网站传递。我们将其用作测试数据是否按预期提取的自动化方式,并通过输入选择来生成报告,从而使用数据自动生成报告。
标签: selenium xpath exact-match non-breaking-characters