【问题标题】:How to loop tests in Selenium IDE?如何在 Selenium IDE 中循环测试?
【发布时间】:2012-06-14 12:45:25
【问题描述】:

我一直在 Selenium IDE 中进行测试。它很容易使用,我已经用它创建了一些测试用例。我一直在搜索谷歌,试图找到一种方法来自动重复我的测试。我已经看到了带有 gotolabel、while 循环等的解决方案。但我无法让它们中的任何一个起作用。有人可以给我一个提示,告诉我如何循环我的测试n 次,或者永远循环。我很感激任何帮助。

【问题讨论】:

    标签: testing selenium-ide


    【解决方案1】:

    无需安装/下载任何东西,内置的times 命令很容易做到这一点:

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

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

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

    【讨论】:

    • 感谢您的回答!完美运行。
    【解决方案2】:

    这样做:

    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>
    

    【讨论】:

    • 对我不起作用。 Selenium IDE 说 [error] Unknown command: 'while'.
    【解决方案3】:

    如上面的答案所述,安装用户扩展,它将向 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 中的 Runs/Failures 计数器不会随着每个循环而增加(我猜是因为单个测试用例从未运行到完成,它只是无限循环)。所以我挖得更远了。我的目标是让同一个测试运行很长时间(几个小时,或者可能是一夜之间),看看是否有任何故障(我现在正在寻找一个间歇性错误)。

      最简单的方法(对我来说,经过几分钟的搜索/实验)是执行以下操作(可能不需要插件,尽管如果您想在测试用例中运行一些小循环,附加的插件肯定很有帮助):

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

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

      【讨论】:

        【解决方案5】:

        使用Flow Control plug-in for 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.

        【讨论】:

        • 您提到的 Firefox 扩展不再提供下载/安装。
        【解决方案6】:

        Selenium IDE 现在具有流控制。这些控制流命令通过指定打开和关闭命令来表示一组(或块)命令来工作。

        可用命令

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

        如果,否则如果,否则,结束 次,结束 做,重复如果 同时,结束

        您可以在此处阅读更多信息:

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

        【讨论】:

          【解决方案7】:

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

          第一次登录 spamcop.net

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

          第三次启动这个脚本

          <!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 的 seleniun 核心扩展
          【解决方案8】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-12-09
            • 1970-01-01
            • 2017-04-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多