如何在Selenium IDE中循环测试?

53

我一直在使用Selenium IDE进行测试。它非常易用,我已经创建了一些测试案例。我在谷歌上搜索,试图找到一种自动重复我的测试的方法。我看到过使用gotolabel、while循环等解决方案。但是我没有成功实现任何一个。有人可以给我一个提示,如何使我的测试循环n次,或者永远循环下去。非常感谢任何帮助。

8个回答

53
无需安装/下载任何东西,内置的 times 命令可以轻松完成此操作:
  1. 在脚本开头插入一行新的命令,选择 Commandtimes,并将目标设置为 10(例如)。
  2. 滚动到脚本底部,添加一个以 end 为命令的新行。
  3. 像往常一样按下“运行”按钮。
  4. 您的命令将被执行 10 次。

在此示例中,我点击了一个按钮2000次:

enter image description here

要永久循环,只需将 10 替换为一个极大的数字,这将需要数个世纪才能执行,如果您正在运行 Selenium IDE,则可能与永远一样好。


4
谢谢您的回答!非常完美地解决了问题。 - TheRealJAG

44

按照以下步骤操作:

  1. 下载该js文件:https://github.com/darrenderidder/sideflow/blob/master/sideflow.js
  2. 从Firefox中启动Selenium IDE,并打开选项菜单。
  3. 将.js文件上传到"Selenium Core扩展(user-extensions.js)"字段中。

该js文件为Selenium IDE提供了goto、gotoIf和while循环功能。下面的示例演示了一个简单的循环:

<tr>
    <td>getEval</td>
    <td>index = 0;</td>
    <td></td>
</tr>
<tr>
    <td>while</td>
    <td>index &lt; 10;</td>
    <td></td>
</tr>
<tr>
    <td>storeEval</td>
    <td>index</td>
    <td>value</td>
</tr>
<tr>
    <td>echo</td>
    <td>${value}</td>
    <td></td>
</tr>
<tr>
    <td>getEval</td>
    <td>index++;</td>
    <td></td>
</tr>
<tr>
    <td>endWhile</td>
    <td></td>
    <td></td>
</tr>

对我不起作用。Selenium IDE 显示 [error] Unknown command: 'while' - Monkey Supersonic

17

如上面的答案所述,安装用户扩展程序,这将为Selenium IDE测试添加循环功能。下面的示例显示了一个简单的循环:

<tr>
<td>getEval</td>
<td>index = 0;</td>
<td></td>
</tr>
<tr>
<td>while</td>
<td>index &lt; 10;</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>index</td>
<td>value</td>
</tr>
<tr>
<td>echo</td>
<td>${value}</td>
<td></td>
</tr>
<tr>
<td>getEval</td>
<td>index++;</td>
<td></td>
</tr>
<tr>
<td>endWhile</td>
<td></td>
<td></td>
</tr>

5
使用Firefox的流程控制插件。重新启动Firefox后,使用label命令标记脚本中的一个点,并使用gotolabel命令跳转到该点。
例如:

enter image description here

或者,如果你想看源代码,这是一个标签:

<tr>
    <td>label</td>
    <td>start</td>  
    <td></td>
</tr>

这会导致执行点跳回到标签处:

<tr>
    <td>gotolabel</td>
    <td>start</td>
    <td></td>
</tr>

您可以在插件页面上看到其他命令,并在Selenium IDE: Flow Control GitHub project中进行记录。


你提到的 Firefox 扩展程序已不再可供下载/安装。 - Nitb

5
我刚开始使用Selenium,通过谷歌搜索“selenium loop”找到了stackoverflow.com上的一个问题。我立即进入扩展程序并开始使用循环。被接受的答案非常有帮助。然而,我想指出其他对Selenium不熟悉的人(并且会在这个页面上遇到问题)的一些东西。
我为一个简单的网页创建了一个简单的测试。我添加了一个循环,以便测试无限运行(直到我暂停/停止它)。但是,我注意到这样做,Selenium GUI中的Runs/Failures计数器不会随着每个循环增加(我猜测这是因为单个测试用例从未运行到完成,而只是无限循环)。所以我深入挖掘了一下。我的目标是让同一个测试运行很长时间(几个小时或可能是过夜),以查看是否有任何故障(我正在追踪一个间歇性错误)。
对我来说(经过几分钟的搜索/实验后),最简单的方法是执行以下操作(可能不需要任何插件,尽管附加的插件肯定有助于在测试用例中运行几个小循环):
保存测试用例到文本文件中
将测试套件保存到文本文件中
在文本编辑器中打开测试套件文本文件
在测试套件中多次复制和粘贴测试用例(例如,一千次)
然后在Selenium中打开测试套件,并运行测试套件。
现在我有了相同的简单测试套件多次运行,Runs/Failures计数器按预期增加(无需任何循环)。

2

1

您的测试套件文件只是一个HTML文件,因此只需执行以下操作:

<tr><td><a href="testCase1.html">testCase1</a></td></tr>
<tr><td><a href="sameStep.html">sameStep</a></td></tr>
<tr><td><a href="testCase2.html">testCase1</a></td></tr>
<tr><td><a href="sameStep.html">sameStep</a></td></tr>


1
这是一个针对Sampcop用户的示例,旨在使用标签和Goto Label命令自动化垃圾邮件投诉:

1. 登录spamcop.net

2. 使用“报告垃圾邮件”选项

3. 启动此脚本

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://www.spamcop.net/sc" />
<title>testecase</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">testecase</td></tr>
</thead><tbody>

<tr>
    <td>label</td>
    <td>target1</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Report Now</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>//input[@value='Send Spam Report(s) Now']</td>
    <td></td>
</tr>
<tr>
    <td>gotoLabel</td>
    <td>target1</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>

我的脚本依赖于Prashant Vadher的Selenium核心扩展。 - HelioSilva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接