web-dev-qa-db-ja.com

Selenium IDEでテストをループする方法は?

私はSelenium IDEでテストしてきました。使い方はとても簡単で、テストケースをいくつか作成しました。 Googleを検索して、テストを自動的に繰り返す方法を見つけようとしています。 gotolabel、whileループなどを使用したソリューションを見ましたが、それらを機能させることはできませんでした。誰かが私のテストをn回ループする方法、または永久にループする方法のヒントを教えてもらえますか。私は助けに感謝します。

36

これを行う:

  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>
45
Prashant Vadher

上記の回答で述べたように、ユーザー拡張機能をインストールすると、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>
17
barry07

何もインストール/ダウンロードする必要はありません。組み込みの times コマンドはこれを非常に簡単に行います:

  1. スクリプトの先頭に新しい行を挿入し、timesとしてCommandを選択し、Targetとして10(たとえば)を選択します。
  2. スクリプトの一番下までスクロールし、コマンドとしてendを含む新しい行を追加します
  3. 通常どおり「実行」ボタンを押します。
  4. コマンドは10回実行されます。

この例では、ボタンを2000回クリックします。

enter image description here

永久にループするには、10を非常に大きな数に置き換えるだけで、実行に数世紀かかります。これは、Selenium IDEを実行している場合はおそらく永久に有効です。

4
Nicolas Raoul

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 に記載されています。

4
Steve HHH

私はSeleniumの初心者です(数分前にSeleniumを使い始めたばかりです)。 「Selenium loop」をGoogleですばやく検索した後、このstackoverflow.comの質問が出ました。私はすぐに拡張機能に飛び込み、ループの使用を開始しました。受け入れられた答えは非常に役立ちます。ただし、Seleniumに新しい(およびこのページでつまずく)他の人に何かを指摘したかったのです。

簡単なWebページの簡単なテストを作成しました。テストを無期限に実行するようにループを追加しました(一時停止/停止するまで)。ただし、これを行うことで、Selenium GUI内のRuns/Failuresカウンターがループごとに増加しないことに気付きました(1つのテストケースが完了するまで実行されなかったため、無限にループしているだけだと推測しています)。それでもう少し掘り下げました。私の目標は、同じテストを長時間(数時間、場合によっては一晩)実行して、障害の有無を確認することでした(現時点では断続的なバグを追跡しています)。

最も簡単な方法(私にとっては、数分間の検索/実験の後)は以下を実行することでした(おそらくプラグインは必要ありませんが、テストケース内でいくつかの小さなループを実行したい場合、添付プラグインは間違いなく役立ちます):

  • テストケースをテキストファイルに保存する
  • テストスイートをテキストファイルに保存する
  • テキストエディターでテストスイートのテキストファイルを開く
  • テストスイート内でテストケースを複数回(たとえば、1000回)貼り付けます
  • 次に、Seleniumでテストスイートを開き、テストスイートを実行します

これで、同じシンプルなテストスイートが何度も実行され、Runs/Failuresカウンターが期待どおりに増加しています(ループは必要ありません)。

4
fuzion101

Selenium IDEにフロー制御が追加されました。これらの制御フローコマンドは、コマンドのセット(またはブロック)を示す開閉コマンドを指定することで機能します。

利用可能なコマンド

以下に、使用可能な制御フローコマンドと、それらのコンパニオンコマンドや終了コマンドを示します。

if、else if、else、終了時間、end do、if if while、end

詳細については、こちらをご覧ください。

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

1
Al Sargent

これは、labelおよびgoto Labelコマンドを使用してスパムの苦情を自動化するためのsampcopユーザーのサンプルです。

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>
0
HelioSilva

テストスイートファイルは単なる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
Alexandre