我想点击任意一行的编辑按钮。 例如,我想点击编辑按钮,其中包含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;
答案 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
。