如何点击"编辑"任何一行上的按钮

时间:2018-01-26 12:07:56

标签: java selenium selenium-webdriver

我想点击任意一行的编辑按钮。 例如,我想点击编辑按钮,其中包含777DDD的记录。

以下是"编辑"的HTML源代码。按钮:



<div class="col-sm-12">
  <table class="table table-bordered table-striped js-dataTable-full-pagination dataTable no-footer" id="DataTables_Table_5" role="grid" aria-describedby="DataTables_Table_5_info">
    <thead>..</thead>
    <tbody>
      <tr role="row" class="odd">..</tr>
      <tr role="row" class="odd">..</tr>
      <tr role="row" class="odd">
        <td class="font-w600 sorting_1">Müzakereli</td>
        <td>26/01/2018 00:00</td>
        <td class="hidden-xs"></td>
        <td>777DDD</td>
        <td class="text-center">..</td>
        <td class="text-center">
          <div class="btn-group">
            <button class="btn btn-sm btn-default" type="button" data-toggle="tooltip" title="" data-original-title="Edit"><i class="fa fa-pencil"></i></button>
            <button class="btn btn-sm btn-default" type="button" data-toggle="tooltip" title="" data-original-title="Delete"><i class="fa fa-trash"></i></button>
            <button class="btn btn-sm btn-default" type="button" data-toggle="tooltip" title="" data-original-title="Meeting"><i class="si si-globe"></i></button>
          </div>
        </td>
      </tr>
    </tbody>
  </table>
</div>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:0)

要点击带有 777DDD 记录的编辑按钮,您可以使用以下代码行:

driver.findElement(By.xpath("//table[@class='table table-bordered table-striped js-dataTable-full-pagination dataTable no-footer' and starts-with(@id,'DataTables_Table_')]//tbody//tr[@class='odd' and @role='row']//td[contains(.,'777DDD')]//button[@class='btn btn-sm btn-default' and @data-original-title='Edit']/i[@class='fa fa-pencil']")).click();

答案 1 :(得分:0)

在这种情况下,我可能会重用这段代码,我会把它包装在一个函数中。

public static void clickEdit(String record)
{
    driver.findElement(By.xpath("//td[.='" + record + "']/following-sibling::td//button[@data-original-title='Edit']")).click();
}

并将其称为

clickEdit("777DDD");

您尝试执行的操作只能通过XPath完成(除非您希望在单个定位器中循环并在所有记录中查找所需的文本)。上面的XPath查找包含所需记录名称的TD,然后找到具有“编辑”按钮并点击它的兄弟TD

从您的评论中,您似乎在定位元素时遇到了很多错误。确保此HTML不在IFRAME内。如果是,则需要切换到IFRAME才能访问“编辑”按钮。

答案 2 :(得分:0)

您可能想尝试使用此代码来查看它是否可以正常运行,

driver.findElement(By.xpath(".//table[@id='DataTables_Table_5']//tr[3]//td[@text='777DDD']//button[@data-original-title='Edit']")).click();

也喜欢&#39; JeffC&#39;提到过,您可能希望查看代码中是否有iFrame。在这种情况下,您首先需要switchTo