首页 > 解决方案 > 如何仅从父标签而不是从子标签获取文本

问题描述

updated page title我只想从下面的代码中获取文本

<h2 class="cmp-title__text" xpath="1">
            updated page title
        <span class="gmt_style" aria-hidden="true">Tue, 20 Jul 2021 13:19:22 GMT</span></h2>

我已经尝试过下面的一个,但它也从 span 标签中获取文本,即Tue , 20 Jul 2021 13:!9:22 GMT.

var pgTitle=element(by.xpath("//h2[@class='cmp-title__text']"));
var pgTitleFromApp = await translatedPgTitle.getText();

输出 :

+updated page title
+Tue, 20 Jul 2021 14:02:35 GMT

请帮忙!

标签: javascriptseleniumxpathprotractor

解决方案


text给定这个 html 片段的 Xpaths 来获取节点:

<h2 class="cmp-title__text">
        updated page title
    <span>Tue, 20 Jul 2021 13:19:22 GMT</span>
    
    second text
    
    <span>Tue, 20 Jul 2021 13:19:22 GMT</span>
    
    third text
    
</h2>

可以使用此 xpath 访问第一个文本节点

//h2[@class='cmp-title__text']/text()[1]

第二个:

//h2[@class='cmp-title__text']/text()[2]

span没有作为父节点的文本节点:

//h2[@class='cmp-title__text']/descendant::text()[parent::*[name()!='span']]

结果(包括空格):

     updated page title


second text



third text

span第一个带有父节点的文本节点

//h2[@class='cmp-title__text']/descendant::text()[parent::*[name()='span']][1]

如同:

//span[1]/text()

推荐阅读