【问题标题】:Selenium XPATH or CSS to select a checkbox with the specified text from a html table I am getting four checkboxes selectedSelenium XPATH 或 CSS 从 html 表中选择具有指定文本的复选框我选择了四个复选框
【发布时间】:2015-11-03 14:04:21
【问题描述】:

我正在尝试从 HTML 列表中选择一个复选框。我想选中名称为“CLEAN_AUDIT”的复选框 我的 XPATH 正在为名称、出生日期、地址、电话选择 4 个复选框 CLEAN_AUDIT:

表格在页面上的外观示例如下:

Table Header:             field        variable
               checkbox | Time_STAMP  | DOB
               checkbox | Time_STAMP  | Address
               checkbox | Clean_AUDIT | Name
               checkbox | Clean_AUDIT | Address
               checkbox | Clean_AUDIT | DOB
               checkbox | Clean_AUDIT | Phone
               etc...

我想选中第 1 个复选框:

  • 名称的 Clean_AUDIT

我的 XPATH 选择了 4 个复选框:

  • 名称的 Clean_AUDIT
  • 地址的Clean_AUDIT
  • DOB 的 Clean_AUDIT
  • 电话的 Clean_AUDIT

表格中的第三列是变量列。它在这一列中有名称,我需要第二列中的字段,即字段列。

如何构建 XPATH 以查找具有“名称”的第三列和具有“Clean_AUDIT”的第二列

在我的下一个测试中,我可以找到具有“Clean_AUDIT”的“地址”

为所有变量找到所有 Clean_AUDIT 的我的 XPATH 是:

//table[@id="reporting_add_report_tab_manual_ct_fields_avail"]//div[(text()="CLEAN_AUDIT")]/preceding::td[1]//input

我需要以某种方式在其中包含名称,以便我可以找到我想要的正确 Clean_Audit。

示例 HTML 是(我已经缩短了它,否则粘贴在这里会太长:

<table id="reporting_add_report_tab_manual_ct_fields_avail" class="GLKP2TGBJE" cellspacing="0" __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true">
<thead aria-hidden="false">
    <colgroup>
        <tbody style="">
            <tr class="GLKP2TGBCD GLKP2TGBJD" __gwt_subrow="0" __gwt_row="0">
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBED GLKP2TGBKD">
                    <div __gwt_cell="cell-gwt-uid-500" style="outline-style:none;">
                        <input type="checkbox" tabindex="-1" />
                    </div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBKD">
                    <div __gwt_cell="cell-gwt-uid-501" style="outline-style:none;">USN</div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBOD GLKP2TGBKD">
                    <div __gwt_cell="cell-gwt-uid-502" style="outline-style:none;" />
                </td>
            </tr>
            <tr class="GLKP2TGBCD" __gwt_subrow="0" __gwt_row="52">
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBED">
                    <div __gwt_cell="cell-gwt-uid-552" style="outline-style:none;">
                        <input type="checkbox" tabindex="-1" />
                    </div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDD">
                    <div __gwt_cell="cell-gwt-uid-553" style="outline-style:none;">CLEAN_AUDIT</div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBOD">
                    <div __gwt_cell="cell-gwt-uid-554" style="outline-style:none;">Address</div>
                </td>
            </tr>
            <tr class="GLKP2TGBCD" __gwt_subrow="0" __gwt_row="20">
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBED">
                    <div __gwt_cell="cell-gwt-uid-552" style="outline-style:none;">
                        <input type="checkbox" tabindex="-1" />
                    </div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDD">
                    <div __gwt_cell="cell-gwt-uid-553" style="outline-style:none;">EXPANDED_CLEAN_AUDIT</div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBOD">
                    <div __gwt_cell="cell-gwt-uid-554" style="outline-style:none;">Name</div>
                </td>
            </tr>
            <tr class="GLKP2TGBCE" __gwt_subrow="0" __gwt_row="21">
                <td class="GLKP2TGBBD GLKP2TGBDE GLKP2TGBED">
                    <div __gwt_cell="cell-gwt-uid-552" style="outline-style:none;">
                        <input type="checkbox" tabindex="-1" />
                    </div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDE">
                    <div __gwt_cell="cell-gwt-uid-553" style="outline-style:none;">CATEGORY</div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDE GLKP2TGBOD">
                    <div __gwt_cell="cell-gwt-uid-554" style="outline-style:none;">Name</div>
                </td>
            </tr>
            <tr class="GLKP2TGBCD" __gwt_subrow="0" __gwt_row="62">
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBED">
                    <div __gwt_cell="cell-gwt-uid-552" style="outline-style:none;">
                        <input type="checkbox" tabindex="-1" />
                    </div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDD">
                    <div __gwt_cell="cell-gwt-uid-553" style="outline-style:none;">CLEAN_AUDIT</div>
                </td>
                <td class="GLKP2TGBBD GLKP2TGBDD GLKP2TGBOD">
                    <div __gwt_cell="cell-gwt-uid-554" style="outline-style:none;">DOB</div>
                </td>
            </tr>
        </tbody>
        <tbody style="display: none;">
            <tfoot style="display: none;" aria-hidden="true" />

谢谢, 里亚兹

【问题讨论】:

  • 在 xpath 中使用索引。你能检查下面的 xpath (//table[@id="reporting_add_report_tab_manual_ct_fields_avail"]//div[(text()="CLEAN_AUDIT")]/preceding::td[1]//input)[1]
  • 突出显示所有 CLEAN_AUDIT 复选框。我只需要一个有名称的,然后我可以为我的下一个测试指定地址。谢谢。
  • //table[@id="reporting_add_report_tab_manual_ct_fields_avail"]//div[text()="CLEAN_AUDIT"]/preceding::td[1]//input[1]

标签: css selenium xpath selenium-webdriver


【解决方案1】:

更新

WebElement test = getDriver().findElement(By.xpath("//table[@id='reporting_add_report_tab_manual_ct_fields_avail']//div[(text()='CLEAN_AUDIT')]/following::div[(text()='Name')]/preceding::td[1]/preceding::td[1]//input"));
test.click();

这是工作的例子。我已经用原始问题中的示例测试了这个 sn-p。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多