私はSelenium IDEでテストしてきました。使い方はとても簡単で、テストケースをいくつか作成しました。 Googleを検索して、テストを自動的に繰り返す方法を見つけようとしています。 gotolabel、whileループなどを使用したソリューションを見ましたが、それらを機能させることはできませんでした。誰かが私のテストをn
回ループする方法、または永久にループする方法のヒントを教えてもらえますか。私は助けに感謝します。
これを行う:
Jsファイルは、Selenium IDEでgoto、gotoIf、およびwhileループ機能を提供します。以下の例は、単純なループを示しています。
<tr>
<td>getEval</td>
<td>index = 0;</td>
<td></td>
</tr>
<tr>
<td>while</td>
<td>index < 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テストにループ機能が追加されます。以下の例は単純なループを示しています。
<tr>
<td>getEval</td>
<td>index = 0;</td>
<td></td>
</tr>
<tr>
<td>while</td>
<td>index < 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>
何もインストール/ダウンロードする必要はありません。組み込みの times コマンドはこれを非常に簡単に行います:
times
としてCommand
を選択し、Target
として10
(たとえば)を選択します。end
を含む新しい行を追加しますこの例では、ボタンを2000回クリックします。
永久にループするには、10
を非常に大きな数に置き換えるだけで、実行に数世紀かかります。これは、Selenium IDEを実行している場合はおそらく永久に有効です。
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 に記載されています。
私はSeleniumの初心者です(数分前にSeleniumを使い始めたばかりです)。 「Selenium loop」をGoogleですばやく検索した後、このstackoverflow.comの質問が出ました。私はすぐに拡張機能に飛び込み、ループの使用を開始しました。受け入れられた答えは非常に役立ちます。ただし、Seleniumに新しい(およびこのページでつまずく)他の人に何かを指摘したかったのです。
簡単なWebページの簡単なテストを作成しました。テストを無期限に実行するようにループを追加しました(一時停止/停止するまで)。ただし、これを行うことで、Selenium GUI内のRuns/Failuresカウンターがループごとに増加しないことに気付きました(1つのテストケースが完了するまで実行されなかったため、無限にループしているだけだと推測しています)。それでもう少し掘り下げました。私の目標は、同じテストを長時間(数時間、場合によっては一晩)実行して、障害の有無を確認することでした(現時点では断続的なバグを追跡しています)。
最も簡単な方法(私にとっては、数分間の検索/実験の後)は以下を実行することでした(おそらくプラグインは必要ありませんが、テストケース内でいくつかの小さなループを実行したい場合、添付プラグインは間違いなく役立ちます):
これで、同じシンプルなテストスイートが何度も実行され、Runs/Failuresカウンターが期待どおりに増加しています(ループは必要ありません)。
Selenium IDEにフロー制御が追加されました。これらの制御フローコマンドは、コマンドのセット(またはブロック)を示す開閉コマンドを指定することで機能します。
利用可能なコマンド
以下に、使用可能な制御フローコマンドと、それらのコンパニオンコマンドや終了コマンドを示します。
if、else if、else、終了時間、end do、if if while、end
詳細については、こちらをご覧ください。
https://www.seleniumhq.org/Selenium-ide/docs/en/introduction/control-flow/
これは、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>
テストスイートファイルは単なる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>