0

我想选择一行并将其删除,但是行的 id 是动态生成的,所以我如何在 selenium webdriver 中使用 java 访问它。当我将使用应用程序添加一行时,将添加具有不同 id 的新 tr 标签。所以我如何选择行。下面是具有不同 id 的两行的表的 html 代码。

<table id="SlotTable" class="noborder" cellspacing="0" cellpadding="0" align="left"     
paging="false" style="border-top: 0px none; table-layout: fixed; width: 984px;">
<tbody id="tableBody">
<script>
<tr id="97.115.104.105.115.104" style="background-color: rgb(221, 221, 221);">
<td width="254px" style="text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 254px;">
<td width="110px" style="text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 110px;">
<td width="60px" style="text-align: right; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 60px;">
<td width="170px" style="text-align: right; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 170px;">
<td width="100px" style="text-align: right; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 100px;">
<td width="120px" style="text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 120px;">
<td width="170 px" style="text-align: right; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
</tr>
<tr id="107.117.109.97.114" style="background-color: rgb(232, 232, 232);">
</tbody>
</table>
</div>
</td>
</tr>
<tr>
</tbody>
</table>
4

4 回答 4

0

使用此方法,您将获得所有行 id 的列表,然后您可以使用它们的 id 执行所有活动:

public ArrayList<String> ListOfIdsOfRows()
{
   WebElement table =driver.findElement(By.id("SlotTable"));
   WebElement tbody=table.findElement(By.tagName("tbody"));
   List<WebElement> rows=tbody.findElements(By.tagName("tr"));
   ArrayList<String> ListOdIds=new ArrayList<>();

   for(int i=0;i<rows.size();i++)
   {
     WebElement row = tbody.findElement(By.xpath("//table[@id='SlotTable']/tbody/tr["+(i+1)+"]"));
     String rowId=row.getAttribute("id");
     ListOdIds.add(rowId);
   }

   return ListOdIds;
}
于 2014-06-19T07:48:35.310 回答
0

例如,您可以使用 CSS 选择器选择行,例如:

#SlotTable > tr:nth-child(1)

#SlotTable > tr:nth-child(2)
于 2013-07-04T07:16:07.413 回答
0

元素的样式似乎相同,因此您可以将它们用作标识符并选择具有该特定样式的所有元素,然后对它们执行操作。

于 2013-07-04T07:18:55.913 回答
0

尝试使用 xpath 获取行:

//tbody[@id='tableBody']//tr[1]

//tbody[@id='tableBody']/script/tr[1]

更改数字以访问您需要的行。

于 2013-07-08T09:29:53.440 回答