我在使用xpath从代码中选择确切的文本“ Section”时遇到问题。
**为了清楚起见,我要求从元素的innerText或innerHTML(而不是id)中选择确切的文本。 **
我可以使用contains文本函数,但是也会导致其他包含“ 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']
这是检查“节”节点时显示的内容:
<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>
请您参考如下方法:
这是一个艰难的过程。问题是您有许多类似的选项,都包含某种形式的“ Section”,很难将它们区分开。更重要的是,每一个都包含一个不间断的空格 ,这意味着normalize-space()也不(直接)起作用。
但是...我发现下面的XPath可以工作。
//li[normalize-space()='Section\u00a0']
normalize-space()删除空格(但不删除
 ),因此必须使用
\u00a0在其中添加空格。我已经在本地测试过,并且可以正常工作。

