无法在selenium Webdriver中使用java定位元素

时间:2013-07-04 07:13:09

标签: java selenium-webdriver

我想选择一行并删除它,但是行的id是动态生成的,所以如何在selenium webdriver中使用java访问它。当我将通过使用应用程序添加一行时,将添加具有不同id的新tr标签。如何选择行.Below是具有两行具有不同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 个答案:

答案 0 :(得分:0)

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

#SlotTable > tr:nth-child(1)

#SlotTable > tr:nth-child(2)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

尝试使用xpath获取行:

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

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

更改号码以访问您需要的行。

答案 3 :(得分: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;
}