2

我正在使用 selenium IDE 1.9.0 来记录测试。请告诉我我没有做错什么以及如何解决问题。

这是我记录测试的步骤。1.我用用户名和密码登录网站 2.我导航到搜索会员页面输入会员姓名,点击姓名链接系统将我引导到会员资料页面。

脚本停在这一行:

ClickAndWait  id=cmp_admin

我第一次播放脚本时它运行时没有任何错误。8小时后运行脚本,它提示我以下错误:

[error] Element id=cmp_admin not found

我使用调试功能查看出了什么问题。以下是调试窗格中显示的消息:

[debug] modifySeparateTestWindowToDetectPageLoads: already polling this window: selenium1365079281311 
[debug] getCurrentWindow newPageLoaded = false 
[error] Element id=cmp_admin not found
[debug] commandError 
[debug] testComplete: failed=true

这是 Selenium IDE 生成的 html 代码

<tr>
    <td>open</td>
    <td>/</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=nd_home</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=cmp_admin</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=quicksearch_anchor</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>css=img[alt=&quot;Member&quot;]</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id=search_name</td>
    <td>suzy</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Balagia, Suzy</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>
4

2 回答 2

3

如果您在单击任何按钮或链接后单击任何按钮或链接需要一段时间来加载页面,如果页面未完全加载,则 selenium ide 找不到下一个元素的 ID 或名称。要解决此类问题,请使用Pause , waitfortext, clickandwait命令

我对代码进行了一些更改,请运行并让我知道它是否适合您。

<tr>
    <td>open</td>
    <td>/</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=nd_home</td>
    <td></td>
</tr>
 <tr>
    <td>pause</td>
    <td>1500</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=cmp_admin</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=quicksearch_anchor</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>css=img[alt=&quot;Member&quot;]</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id=search_name</td>
    <td>suzy</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Balagia, Suzy</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>
于 2013-04-05T03:51:58.943 回答
1

这可能是几件事。首先,您在页面上寻找的元素 (id=cmp_admin) 是否仍称为 cmp_admin?从您的代码看来,您必须单击 id=nd_home,然后加载一个包含 cmp_admin 的页面。如果是这种情况,很可能页面尚未完成加载,因此该元素尚不存在。尝试在单击 nd_home 之间使用 waitfor 命令,如下所示:

点击 | id=nd_home |

waitForElementPresent | id=cmp_admin |

点击并等待 | id=cmp_admim |

您也可以尝试暂停,等待几秒钟,但我发现 waitfor 命令不那么脆弱,尤其是当您有大量 Ajax 请求或必须加载的元素时。

克伦达图

于 2013-04-04T13:15:48.007 回答