如何在父标记的2个相同子标记之间提取文本

时间:2017-08-13 17:34:42

标签: selenium xpath

下面是html标记,我想使用xpath提取手机号码7788996655: -

<table class="table hover" id="resultTable">
 <tbody>
    <tr class="odd">
        <td class="left">
            <img src="/symfony/web/index.php/pim/viewPhoto/gamerNumber/1/from/gameDir" height="200" width="196">
        </td>
        <td class="left">
            <span style="font-weight:bold;">John Player</span>
            &nbsp;&nbsp;&nbsp;&nbsp;
            <br>
            <span style="font-weight:bold;">Email: </span>
            <a href="john.player@yyeett.com">john.player@yyeett.com</a>, 
            <span style="font-weight:bold;">
            Mobile: </span>7788996655, 
            <span style="font-weight:bold;">Skype: </span>
            game.player,
            <br>
            <span style="font-weight:bold;">Designation: </span> 
            Moderator,  
            <br> 
            <span style="font-weight:bold;">Game Name: </span>
            Counter Strike
            <br>
        </td>
    </tr>
 </tbody>
</table>

我在xpath下面尝试过,但它没有用:

//td/span[contains(.,'Mobile:')]/following-sibling::text()[1]

有人能为此提供解决方案吗?

我尝试的解决方法是在 td 中获取全文,然后使用模式匹配正则表达式从中提取移动号码。但是,现在我想知道是否可以使用xpath?

1 个答案:

答案 0 :(得分:0)

您可以使用以下XPath

来完成
<parent td node xpath>/text()[preceding-sibling::span[1][text() = 'Mobile: ']]

现在解释一下。 /td/text()将选择作为td节点一部分但不属于任何其他节点的每个文本。因此,在这种情况下,,7788996655,game.playermoderator

现在,在这4个文本中,我们想要过滤掉一个包含前一个兄弟的文本,这是一个范围,并且文字为Mobile:,因此我们可以添加[preceding-sibling::span[1][text()='Mobile: ']]