硒-使用count函数编写xpath

时间:2018-10-17 14:04:06

标签: selenium-webdriver xpath

对于这样的HTML页面,我正在编写两个xpath语句以从td元素获取文本。第一个xpath是获取与我的要求匹配的th元素的位置。

count(.//th[contains(., 'Header5')]/preceding-sibling::*)+1

然后我将上面返回的计数值放入此xpath并获取文本

.//tr[2]/td[**count**]

如何将这两个xpath合并为单个xpath并获得结果。我尝试过类似的方法,但是它总是选择第一个td

.//tr[2]/td[count(.//th[contains(., 'Header5')]/preceding-sibling::*)+1]
(.//tr[2]/td)[count(.//th[contains(., 'Header5')]/preceding-sibling::*)+1]

这是html结构

<thead>
    <th> Header1 </th>
    <th> Header2 </th>
    <th> Header3 </th>
    <th> Header4 </th>
    <th> Header5 </th>
    <th> Header6 </th>
</thead>
<tbody>
    <tr>
    <tr>
        <td> Cell1 </td>
        <td> Cell2 </td>
        <td> Cell3 </td>
        <td> Cell4 </td>
        <td> Cell5 </td>
        <td> Cell6 </td>
    </tr>
</tbody>

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

.//tr[2]/td[count(//th[contains(., 'Header5')]/preceding-sibling::th) + 1]

请注意,/td[count(.//th)]表示属于th后代td个节点的个,而/td[count(//th)]表示< em>在DOM中th的数量 ,因此请小心上下文节点(点)