在同一tr xpath python中查找td包含的xth td

2024-04-29 02:49:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我的页面有一个包含11列的表,给定第2列的文本值,我想单击同一行的第11列(箭头按钮)。

我的DOM是这样的:

<table id=”atab”  width=”100%” class=”at-class”>`  
    <thead>…</thead>  
    <tbody>  
        <tr>...</tr>  
        <tr>  
            <td>…</td>  
            <td>  
                <a href=”/abc/def/ghi/prop?id=1”>grp1</a>  
            </td>  
            <td>…</td>  
            <td>…</td>  
            <td>200</td>  
            <td>…</td>  
            <td>…</td>  
            <td>…</td>  
            <td>…</td>  
            <td>…</td>  
            <td>  
                <ul class=”dropwd”  
                    <li class>  
                        <input class=”a-act a-menu-button” type=”button” value=”^”  
                        <ul class=”sub_menu” style=”vis””>…</ul>  
                    </li>  
                </ul>  
            </td>  
        <tr>  
    <tbody>  

这是可行的(因为我刚刚从inspect元素中获取了xpath)。但我不能用。

myxpath = "//*[@id='atab']/tbody/tr[2]/td[11]/ul/li/input”
myxpath.click()

我需要使用contains,然后抓取兄弟(第11个位置,我的contains的第9个位置)。我为myxpath尝试了以下操作,但它找不到元素。我在其他地方也用过同样的格式,很好。唯一的区别是这次,我不是得到相邻的兄弟姐妹,而是得到第X个兄弟姐妹。

其中campg = grp1

//table[@class='at-class']//td[contains(text(),' " + campg + " ')]/following-sibling::td[9]/ul/li/input
//* [@id='atab']//td[contains(text(),' " + campg + " ')]/following-sibling::td[9]/ul/li/input
//* [@id='campaigns']//td[contains(text(),' " + campg +  " ')]/following-sibling::td[9]/ul/li/input[@type=’button’]

我也试过其他的组合。


Tags: textidinputbuttonliultrclass
1条回答
网友
1楼 · 发布于 2024-04-29 02:49:04

这个XPath表达式选择表,查找匹配的行(其中第二列包含您正在搜索的指针),然后选择此行中的第11列以及相关的输入元素。

不需要使用任何使用祖先和跟随的相对轴步骤,只有下降树通常更快,更可读,更不容易出错。

//table[@id='atab']//tr[contains(td[2], 'needle')]/td[11]/ul/li/input

相关问题 更多 >