Skip to main content
 首页 » 编程设计

selenium之如何使用Selenium Webdriver中的xpath查找包含的文本的确切值

2025年05月04日80pengyingh

我在使用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&nbsp;<span class="child-count"></span> 
                            </li> 
 


这是元素属性中显示的内容:

 
id: "GOS--/40" 
innerHTML: "↵                                Section&nbsp;<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">&times;</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&nbsp;<span class="child-count"></span> 
                            </li>                         
 
 
                            <li id="Sec1--/23" class="nodecollapsed item parent-node"> 
                                Section 1&nbsp;<span class="child-count"></span> 
                            </li> 
 
 
                            <li id="Sec2--/24" class="nodecollapsed item parent-node"> 
                                Section 2&nbsp;<span class="child-count"></span> 
                            </li> 
 
 
                            <li id="GOS--/40" class="nodecollapsed item parent-node"> 
                                Section&nbsp;<span class="child-count"></span> 
                            </li> 
 
 
                            <li id="RS--/43" class="nodecollapsed item parent-node"> 
                                Regional Section&nbsp;<span class="child-count"></span> 
                            </li> 
 

请您参考如下方法:

这是一个艰难的过程。问题是您有许多类似的选项,都包含某种形式的“ Section”,很难将它们区分开。更重要的是,每一个都包含一个不间断的空格&nbsp;,这意味着normalize-space()也不(直接)起作用。

但是...我发现下面的XPath可以工作。

//li[normalize-space()='Section\u00a0'] 


normalize-space()删除空格(但不删除 &nbsp),因此必须使用 \u00a0在其中添加空格。我已经在本地测试过,并且可以正常工作。