首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在selenium中为包含 的文本找到确切的值?

如何在selenium中为包含 的文本找到确切的值?
EN

Stack Overflow用户
提问于 2019-03-26 11:13:48
回答 5查看 2.5K关注 0票数 1

我在使用xpath从代码中选择确切的文本“节”时遇到了问题。

**为了明确起见,我要求从元素的innerText或innerHTML (如果可能的话)中选择确切的文本,而不是id。**

我可以使用contains函数,但这会导致返回/突出显示其他包含“节”的部分匹配:

代码语言:javascript
复制
//div[@aria-hidden='false']//ul/li[contains(text(),'Section')]

我尝试使用以下方法,但不知道语法是否正确,因为没有返回/突出显示:

代码语言:javascript
复制
//div[@aria-hidden='false']//ul/li[text()='Section')]

//div[@aria-hidden='false']//ul/li[.='Section']

//div[@aria-hidden='false']//ul/li[normalize-space(.)='Section']

以下是检查节节点时所显示的内容:

代码语言:javascript
复制
<li id="GOS--/40" class="nodecollapsed item parent-node xh-highlight" style="" xpath="1">
                                Section&nbsp;<span class="child-count"></span>
                            </li>

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

代码语言:javascript
复制
id: "GOS--/40"
innerHTML: "↵                                Section&nbsp;<span class="child-count"></span>↵                            "
innerText: " Section "

下面是xml,它显示了返回的其他部分匹配:

代码语言:javascript
复制
<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>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-03-26 14:18:09

这是一次艰难的考验。问题是,您有许多类似的选项,它们都包含某些风味的“节”,很难区分它们。更重要的是,每个空间都包含一个不间断的空间&nbsp;,这意味着normalize-space()也不能(直接)工作。

但是..。我发现下面的XPath会起作用。

代码语言:javascript
复制
//li[normalize-space()='Section\u00a0']

normalize-space()删除空白(但不是&nbsp),所以您必须将其与\u00a0一起添加到其中。我已经在本地测试过了,而且还能用。

票数 4
EN

Stack Overflow用户

发布于 2019-03-26 11:44:06

尝试跟踪xpath,看看它是否有帮助。

代码语言:javascript
复制
 //li[starts-with(@id,'GOS')][@class='nodecollapsed item parent-node xh-highlight']

代码语言:javascript
复制
  //li[@class='nodecollapsed item parent-node xh-highlight'][@xpath='1']
票数 0
EN

Stack Overflow用户

发布于 2019-03-26 12:03:08

您可以尝试下面的XPath来找到节节点

如果有帮助的话

//li[@id='GOS--/40'][contains(text(),'Section')]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55355770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档