Selenium XPATH我试图从表格的第2列中选择一个单选按钮,其中文本名称为

时间:2016-04-07 15:07:07

标签: python-2.7 selenium xpath selenium-webdriver

我有一个包含5列的表格。第2列有一些名称的文本。第1列是单选按钮。第3,4和5列是一个单选按钮。 我想从第3列中选择名称文本为“MaidenName”

的单选按钮

我可以找到MaidenName然后我尝试使用follow-sibling转到下一列。我的XPATH无效。

我的XPATH是:

//table[@id="data_configuration_edit_mapping_tab_mappings_ct_mapping_body"]/tbody//tr//td//div//span[text()="MAIDENNAME"]/following-sibling::td[2]//div//span[@type="radio"]

HTML示例是:

    <table id="data_configuration_edit_mapping_tab_mappings_ct_mapping_body" cellspacing="0"
       style="table-layout: fixed; width: 100%;">
    <colgroup>
    <tbody>
    <tr class="GJPPK2LBFG" __gwt_subrow="0" __gwt_row="0">
    # few trs here. I have removed. too long to paste otherwise
    <tr class="GJPPK2LBFG" __gwt_subrow="0" __gwt_row="12">
        <td class="GJPPK2LBEG GJPPK2LBGG GJPPK2LBHG">
        <td class="GJPPK2LBEG GJPPK2LBGG">
            <div __gwt_cell="cell-gwt-uid-1076" style="outline-style:none;">
                <span class="" title="DOB"
                      style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;padding-right: 1px;">DOB</span>
            </div>
        </td>
        <td class="GJPPK2LBEG GJPPK2LBGG">
            <div __gwt_cell="cell-gwt-uid-1077" style="outline-style:none;">
                <input type="radio" name="rb3386"/>
            </div>
        </td>
        <td class="GJPPK2LBEG GJPPK2LBGG">
            <div __gwt_cell="cell-gwt-uid-1078" style="outline-style:none;">
                <input type="radio" name="rb3386"/>
            </div>
        </td>
        <td class="GJPPK2LBEG GJPPK2LBGG GJPPK2LBBH">
            <div __gwt_cell="cell-gwt-uid-1079" style="outline-style:none;">
                <input type="radio" checked="" name="rb3386"/>
            </div>
        </td>
    </tr>
    <tr class="GJPPK2LBEH" __gwt_subrow="0" __gwt_row="13">
        <td class="GJPPK2LBEG GJPPK2LBFH GJPPK2LBHG">
            <div __gwt_cell="cell-gwt-uid-1075" style="outline-style:none;">
                <input type="radio" name="rbCrossRow119"/>
            </div>
        </td>
        <td class="GJPPK2LBEG GJPPK2LBFH">
        <td class="GJPPK2LBEG GJPPK2LBFH">
        <td class="GJPPK2LBEG GJPPK2LBFH">
        <td class="GJPPK2LBEG GJPPK2LBFH GJPPK2LBBH">
    </tr>
    <tr class="GJPPK2LBFG GJPPK2LBMG" __gwt_subrow="0" __gwt_row="14">
        <td class="GJPPK2LBEG GJPPK2LBGG GJPPK2LBHG GJPPK2LBNG">
        <td class="GJPPK2LBEG GJPPK2LBGG GJPPK2LBNG">
            <div __gwt_cell="cell-gwt-uid-1076" style="outline-style:none;">
                <span title="MAIDENNAME"
                      style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;padding-right: 1px;">MAIDENNAME</span>
            </div>
        </td>
        <td class="GJPPK2LBEG GJPPK2LBGG GJPPK2LBNG">
            <div __gwt_cell="cell-gwt-uid-1077" style="outline-style:none;">
                <input type="radio" name="rb3388"/>
            </div>
        </td>
        <td class="GJPPK2LBEG GJPPK2LBGG GJPPK2LBNG">
            <div __gwt_cell="cell-gwt-uid-1078" style="outline-style:none;">
                <input type="radio" name="rb3388"/>
            </div>
        </td>
        <td class="GJPPK2LBEG GJPPK2LBGG GJPPK2LBBH GJPPK2LBNG">
            <div __gwt_cell="cell-gwt-uid-1079" style="outline-style:none;">
                <input type="radio" checked="" name="rb3388"/>
            </div>
        </td>
    </tr>
    <tr class="GJPPK2LBEH" __gwt_subrow="0" __gwt_row="15">
    <tr class="GJPPK2LBFG" __gwt_subrow="0" __gwt_row="16">
    </tbody>
</table>

找到MaideName后,我想在2列中选择MaidenName第2列中的单选按钮

谢谢Riaz

2 个答案:

答案 0 :(得分:0)

我现在已经解决了。我应该使用以下属性。它在同一行中。 follow-sibling将转到下一个tr节点。 需要留在同一个节点。

我的工作XPATH是:

//table[@id="data_configuration_edit_mapping_tab_mappings_ct_mapping_body"]/tbody//tr//td//div//span[text()="MAIDENNAME"]/following::td[2]//div//input

答案 1 :(得分:0)

我会在tr点停止检查相应列中是否有MAIDENNAME文本,然后在此行中获取所需的列:

//table[@id="data_configuration_edit_mapping_tab_mappings_ct_mapping_body"]/tbody//
    tr[td[2]/div/span/text()="MAIDENNAME"]/
        td[3]/div/input[@type="radio"]
为了便于阅读,添加了新行。

另请注意,我还必须修复代码名称 - 您定位的是input元素,而不是span元素。