我在表中识别动态ID时遇到了一些问题,这些动态ID具有动态ID来执行某些操作,如编辑或删除,因为ID是动态显示的,我不明白如何执行动作,例如编辑代码编号12345时的数据显示的id是id = ... 0。 怎么解决这个?我正在使用Selenium IDE。我们怎么样 当数字ID是动态时编辑还是删除? 这是HTML代码
<div>
<table id="gvSomething" class="mGrid" cellspacing="0" style="border-collapse:collapse;">
<tbody>
<tr>
<th scope="col">
<a id="CODE">code no.</a>
<th scope="col">
<a id="NAME">name</a>
<th scope="col">
<a id="STATUS">active</a>
<th scope="col"> CONTROL </th>
</tr>
<tr>
<td align="center">
<span id="Code_0">12345</span>
</td>
<td>
<span id="Name_0">zero</span>
</td>
<td valign="middle" align="center">
<span id="Status_0">Yes</span>
</td>
<td valign="middle" align="center">
<input id="Edit_0" type="image" src="../Images/Edit.gif" title="Edit Record" name="Status$ctl02$imbEdit">
<input id="Delete_0" type="image" src="../Images/Delete.gif" title="Delete Record" name="Delete$ctl02$imbDelete">
</td>
</tr>
<tr>
<td align="center">
<span id="Code_1">098765</span>
</td>
<td>
<span id="Name_1">one</span>
</td>
<td valign="middle" align="center">
<span id="Status_1">Yes</span>
</td>
<td valign="middle" align="center">
<input id="Edit_1" type="image" src="../Images/Edit.gif" title="Edit Record" name="Status$ctl03$imbEdit">
<input id="Delete_1" type="image" src="../Images/Delete.gif" title="Delete Record" name="Delete$ctl03$imbDelete">
</td>
</tr>
</tbody>
</table>
以下是尚未添加新数据的数据的示例代码
code | name | active | control
12345 (id=Code_1) zero (id=name_1) yes (id=status_1) edit(id=edit_1)/delete (id=delete_1)
098765 (id=Code_2) one (id=name_2) yes (id=status_2) edit(id=edit_2)/delete (id=delete_2)
当添加新数据时,就像这样
code | name | active | control
01234 (id=Code_1) new (id=name_1) yes (id=status_1) edit(id=edit_1)/delete (id=delete_1)
12345 (id=Code_2) zero (id=name_2) yes (id=status_2) edit(id=edit_2)/delete (id=delete_2)
098765 (id=Code_3) one (id=name_3) yes (id=status_3) edit(id=edit_3)/delete (id=delete_3)
当我们尝试使用id = edit_2点击编辑图片时,selenium IDE如何知道它知道我们要编辑名称为12345且名称为零的数据,而不是编辑名称为09876的数据?
答案 0 :(得分:0)
对于像动态表这样的东西,ID定位器不能完成这项工作,你是对的。但是Selenium有两种类型的定位器,用于查找相对于其他元素的元素:XPath和CSS选择器。通常建议使用CSS选择器,因为它们更快,但由于我们正在查看文本而不是HTML标记属性,因此XPath是解决此问题的方法。
如果你想找到一个包含代码号的行,下面是一个可以用作selenium IDE中定位器的定位器。 12345并且名称为零,然后选择该行中的编辑控件。
xpath=//tr[contains(., "12345") and contains(., "zero")]//input[contains(@id, "Edit")]