使用动态ID在表中编辑或删除操作

时间:2014-04-22 02:00:23

标签: selenium selenium-ide

我在表中识别动态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的数据?

1 个答案:

答案 0 :(得分:0)

对于像动态表这样的东西,ID定位器不能完成这项工作,你是对的。但是Selenium有两种类型的定位器,用于查找相对于其他元素的元素:XPath和CSS选择器。通常建议使用CSS选择器,因为它们更快,但由于我们正在查看文本而不是HTML标记属性,因此XPath是解决此问题的方法。

如果你想找到一个包含代码号的行,下面是一个可以用作selenium IDE中定位器的定位器。 12345并且名称为零,然后选择该行中的编辑控件。

xpath=//tr[contains(., "12345") and contains(., "zero")]//input[contains(@id, "Edit")]

以下是W3school's tutorial on XPathreference on CSS selectors