如何在Selenium IDE中循环测试?

问题描述 投票:36回答:8

我一直在Selenium IDE中测试。它非常易于使用,我用它创建了一些测试用例。我一直在搜索Google,试图找到一种自动重复测试的方法。我已经看到了一个带有gotolabel的解决方案,而循环等等。但我无法使它们中的任何一个工作。有人可以给我一个如何循环我的测试n时间,或永远循环的提示。我感谢任何帮助。

testing selenium-ide
8个回答
45
投票

做这个:

  1. 下载此js文件:https://github.com/darrenderidder/sideflow/blob/master/sideflow.js
  2. 从Firefox启动Selenium IDE并打开选项菜单。
  3. 将.js文件上载到“Selenium Core extensions(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>

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>

4
投票

我是Selenium的新手(刚开始使用它几分钟前)。在谷歌快速搜索“selenium loop”之后,这个stackoverflow.com问题出现了。我立即跳入扩展并开始使用循环。接受的答案非常有用。但是,我想为其他对selenium不熟悉的人指出别的东西(并在这个页面上绊倒)。

我为一个简单的网页创建了一个简单的测试。我添加了一个循环,以便测试无限期地运行(直到我暂停/停止它)。但是,我注意到,通过这样做,Selenium GUI中的运行/失败计数器不会随着每个循环递增(我猜是因为单个测试用例从未运行到完成,它只是无限循环)。所以我进一步挖了一下。我的目标是让相同的测试运行很长时间(几个小时,或者可能是一夜之间)以查看是否有任何故障(我现在正在追逐一个间歇性的错误)。

最简单的方法(对我来说,经过几分钟的搜索/实验)是要做以下事情(可能没有插件需要,虽然如果你想在测试用例中运行一些小循环,附加的插件肯定是有用的):

  • 将测试用例保存到文本文件中
  • 将测试套件保存到文本文件中
  • 在文本编辑器中打开测试套件文本文件
  • 在测试套件中多次复制并粘贴测试用例(例如,一千次)
  • 然后在Selenium中打开测试套件,并运行测试套件

现在我有相同的简单测试套件运行多次,并且运行/失败计数器按预期递增(不需要任何循环)。


4
投票

使用Flow Control plug-in for Firefox。重新启动Firefox后,使用label命令在脚本中标记一个点,并使用gotolabel命令跳转到那里。

例如:

或者,如果您更愿意看到源代码,那么这是一个标签:

<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中。


0
投票

这是sampcop用户的示例,以便使用label和goto Label命令自动化垃圾邮件投诉:

首次登录spamcop.net

第二次使用报告垃圾邮件选项

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>

0
投票

您的测试套件文件只是一个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>

0
投票

Selenium IDE现在具有流量控制功能。这些控制流命令通过指定打开和关闭命令来表示命令的集合(或块)。

可用命令

以下是每个可用的控制流命令以及它们的伴随和/或关闭命令。

if,else if,else,end times,end do,repeat if while,end

你可以在这里读更多关于它的内容:

https://www.seleniumhq.org/selenium-ide/docs/en/introduction/control-flow/


0
投票

无需安装/下载任何内容,内置的times命令非常容易实现:

  1. 在脚本的开头插入一个新行,选择times作为其Command10(例如)作为其Target
  2. 向下滚动到脚本的底部,然后使用end作为命令添加一个新行
  3. 像往常一样按“运行”按钮。
  4. 您的命令执行了10次。

在这个例子中,我点击一个按钮2000次:

enter image description here

要永远循环,只需用非常大的数字替换10,这需要几个世纪才能执行,如果你运行的是Selenium IDE,这可能就像永远一样好。

© www.soinside.com 2019 - 2024. All rights reserved.