java - 您能为以下场景建议一个好的 xpath 吗?

标签 java selenium xpath selenium-webdriver

我的html代码如下 -

<table id="tblResults_" class="jtable ui-widget-content">
<thead>
<tbody>
<tr class="jtable-data-row jtable-row-even jtable-row-selected" data-record-key="-1" style="">
<td class="jtable-command-column">
<td class="jtable-command-column">
<td class="jtable-command-column">
<td>-1</td>
<td>** new record **</td>
<td/>
<td/>
<td/>
<td/>
<td/>
<td/>
<td/>
<td/>
<td/>
<td class="jtable-command-column">
<button class="jtable-command-button jtable-delete-command-button" title="Delete" style="background-color: transparent;">
</td>
</tr>
</tbody>
</table>

自动化场景:- 在动态生成的表中,我需要添加一个新的数据行。然后我需要验证添加的数据并将其删除。

目前我按照以下步骤操作:- 1)验证添加数据的行。 2)引用行号,点击带有如下xpath的删除按钮。

xpath=//*[@id='tblResults_']/tbody/tr["+rownumber+"/td[15/button

这个 xpath 正在工作。 但根据当前情况,我需要使 td 也变得灵活。

所以我选择了下面的xpath:-

driver.findElement(By.xpath("//*[@id='tblResults_']/tbody/tr/*/button[contains(@title,"Delete")]"));

但是当我将上面的代码粘贴到 Eclipse 时,它​​给了我一些错误,指出左侧应该是一个变量。

有人可以帮我吗?

要求 - 行号可变。不应考虑列数。可以考虑按钮类或标题。

最佳答案

您只需要正确处理引号即可:

"//*[@id='tblResults_']/tbody/tr/*/button[contains(@title, 'Delete')]"

此外,如果这始终是您需要检查的最后一个tr:

"//*[@id='tblResults_']/tbody/tr[last()]//button[contains(@title, 'Delete')]"

关于java - 您能为以下场景建议一个好的 xpath 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35669205/

相关文章:

python - 在 Python 中使用 XPath 和 ETXPath 的 LXML

java - 具有持久工作实例的线程池

java - 使用光标适配器选中复选框时,使用删除按钮删除 ListView 中的项目

java - 我应该如何重构此方法以遵守 Uncle Bob 规则,即参数不得超过 2 或 3 个?

python - 如何使用Python和Selenium访问网站https ://www. aliexpress.com/后点击并关闭横幅

python - Scrapy XPath 页面上的所有链接

java - 如何使一个类的泛型类型与前一个类没有子父关系?

java - 从 webelement 到另一个 webelement 的相对 xpath

java - 如何在不打开 Windows 弹出窗口的情况下下载 Excel 电子表格

XML 特定查询