如何用xpath选择特定的子节点?

问题描述 投票:0回答:1

我想用 Katalon + XPath 在表格行中自动查找元素。我有一个html表格,我想找到满足我条件的正确的行。

我的第一次尝试是。

//*[starts-with(@id,\'MessageList_DXDataRow\')]/td[2] [text()='SomeSearchValue'] and td[3][contains(text(), 'SomeString')]

但是简单的添加 "and "会让它返回boolean: false.

所以我把它修改成这样。

//*[starts-with(@id,'MessageList_DXDataRow')]/*[self::td[2][text()='SomeSearchValue'] and self::td[3][contains(text(), 'SomeString')]]

但它什么也找不到。

如你所见,我想在td[2]中搜索一个固定值,在td[3]中搜索一个子串。

编辑:我想搜索td[2]中的固定值和td[3]中的子串。

相关的html:

<table>
<tbody>
    <tr id="MessageList_DXDataRow0" class="dxgvDataRow table-row share row-navigable" style="font-weight: bold;">
        <td class="dxgv">FirstColumn</td>
        <td class="dxgv">SecondColumn</td>
        <td class="message-content dxgv">ThirdColumn</td>
        <td class="dxgv">FourthColumn</td>
        <td class="dxgvCommandColumn dxgv dx-ac">FifthColumn</td>
    </tr>
    <tr id="MessageList_DXDataRow1" class="dxgvDataRow table-row share row-navigable" style="font-weight: bold;">
        <td class="dxgv">FirstColumn</td>
        <td class="dxgv">SecondColumn</td>
        <td class="message-content dxgv">ThirdColumn</td>
        <td class="dxgv">FourthColumn</td>
        <td class="dxgvCommandColumn dxgv dx-ac">FifthColumn</td>
    </tr>

我怎么能让它工作呢?

regex xpath katalon-studio
1个回答
0
投票

我想明白了。

我正在寻找的解决方案是这样的。

(//*[starts-with(@id,'MessageList_DXDataRow')]/td[2][text()='SecondColumn']/following-sibling::td[1][contains(text(), 'Third')])[1]'

0
投票

我还是不清楚你要的是OR还是AND条件。

这将选择满足td[2]条件或td[3]条件的行。

//tr[starts-with(@id,'MessageList_DXDataRow')][./td[2][.="SecondColumn"] or ./td[3][contains(.,"Third")]]

这将选择同时满足td[2]和td[3]条件的行。

//tr[starts-with(@id,'MessageList_DXDataRow')][./td[2][.="SecondColumn"] and ./td[3][contains(.,"Third")]]
© www.soinside.com 2019 - 2024. All rights reserved.