変数、エコー、アラート、ポップアップ処理を保存します。 Selenium IDE

⚡ スマートサマリー

コマンドを保存する Selenium IDEは実行時の値を名前付き変数に保存し、echoコマンドでログに出力します。また、専用のコマンド群がアラート、確認ダイアログ、複数のブラウザウィンドウ間の切り替えを処理します。

  • 🔘 変数を作成します。 store コマンドは、 Target そして、Value 内の変数名。
  • ☑️ もう一度読んでみてください。 コマンドがターゲットまたは値を受け入れる箇所では、名前を ${ } で囲みます。
  • デバッグ用の出力: echoコマンドは、文字列または変数をIDEのログに直接書き込みます。
  • 🧪 アラートは自動的に承認されます。 IDEが自動的に「OK」をクリックするので、storeAlertを使用してメッセージテキストを取得してください。
  • 🛠️ 確認には決定が必要です。 ダイアログを開くコマンドの前に、chooseOkOnNextConfirmation を配置してください。
  • 📊 ウィンドウ切り替え: selectWindowはウィンドウタイトルを対象とし、nullを指定すると親ウィンドウに戻ります。

変数、エコー、アラート、ポップアップ処理を Selenium IDE

このチュートリアルでは、ストアコマンド、エコーコマンド、アラートとポップアップの処理について学びます。 Selenium IDEこれらのコマンドを組み合わせることで、固定された記録済みスクリプトを、アプリケーションが実行時に返す値に応じて動作するスクリプトに変換できます。

⚠️ バージョンに関する注意: 以下のスクリーンショットはオリジナルからのものです Firefox-プラグイン Selenium IDE では、コマンドはキャメルケースの Selenese 名を使用します。現在の Chrome、 Firefox Edge拡張機能は同じ動作を維持しますが、ほとんどのコマンド名にスペースを含めて書き込みます。ping 表はこの記事の末尾付近に掲載されており、元のコマンドとスクリーンショットはすべて公開されたままの状態で保存されています。

Selenium IDE 変数

ストア

変数を保存するには Selenium IDEでは、 店舗 コマンド。以下の図は、「tutorial」という値を「myVariable」という名前の変数に格納します。

Selenium IDEストアコマンドで値チュートリアルをmyVariableに保存します

変数にアクセスするには、単に ${ … } 記号で囲みます。たとえば、「myVariable」の値を「userName」テキストボックスに入力するには、次のようにします。 Mercury ツアーの場合、値フィールドに ${myVariable} と入力します。

Selenium ユーザー名テキストボックスの値フィールドに${myVariable}を使用してIDEコマンドを入力します。

エコーコマンド Selenium IDE

格納された変数は、何かがそれを印刷するまで見えません。 echo このコマンドは、再生中にIDEのログペインにメッセージを書き込むため、その上にアサーションを作成する前に、ストアコマンドが期待どおりの結果をキャプチャしたことを最も迅速に確認できます。

このコマンドはどちらの形式も受け付けます。

  • 文字通りの文字列。 テキストを Target 例えばフィールド ログイン手順が完了しました長いスクリプトの中でチェックポイントを示すため。
  • 変数。 ${myVariable} を Target フィールド名の代わりに、格納されている値が表示されます。

2 つの習慣により、echo は見た目以上にずっと便利になります。変数を作成する store コマンドの直後に変数を出力すると、エラーが発生した場合でも、 trac20 ステップ後のアサーションではなく、キャプチャに ed します。また、ログ ペインにはすべてのコマンドが 1 つのフラット リストで表示されるため、各メッセージにはそれが属するステップをプレフィックスとして付けます。echo はログに書き込むだけで、ページを変更したりテストを失敗させたりすることはないため、スクリプトに永続的に残しておいても安全です。

ストア要素現在

このコマンドは、指定された要素の有無に応じて「true」または「false」を格納します。以下のスクリプトは、ブール値「true」を「var1」に、「false」を「var2」に格納します。確認のため、echoコマンドを使用してvar1とvar2の値を表示します。 URL 以下の図は、 Mercury ツアーのホームページ。

Selenium IDEのstoreElementPresentがvar1にtrue、var2にfalseを保存し、ログにその旨が記録されました。

ストアテキスト

このコマンドは、要素の内部テキストを変数に格納するために使用されます。以下の図は、Facebookのサインアップページにあるh1タグの内部テキストを「textVar」という名前の変数に格納する例です。

Selenium IDEのstoreTextコマンドがcss=h1をtextVar変数に読み込んでいます

ページ上に同じ種類の要素は一つしかないため、「css=h1」をターゲットとして使用しても問題ありません。下の画像は、 Selenium IDEは「Sign Up」という文字列を「textVar」変数に保存することができました。なぜなら、echoコマンドでその値が正しく表示されたからです。

Selenium IDEのログペインに「サインアップ」をtextVarに格納されている値として出力する

アラート、ポップアップ、および複数 Windows

アラートはおそらく最もシンプルなポップアップウィンドウの形式です。最も一般的な Selenium アラートの処理に使用される IDE コマンドは次のとおりです。

アラート あなたが使用します

アサートアラート

アサートノットアラート

アラートメッセージを取得し、指定した文字列値と照合します。

アサートアラート現在

アサートアラートが存在しない

アラートが存在するかどうかを表明する
ストアアラート アラートメッセージを取得し、指定した変数に格納します。
ストアアラートプレゼント アラートが存在する場合はTRUE、それ以外の場合はFALSEを返します。

アラートの検証

verifyNotAlert

アラートメッセージを取得し、指定した文字列値と等しいかどうかを確認します。

verifyアラートプレゼント

verifyAlertNotPresent

アラートが存在するかどうかを確認します

アラートを操作するときは、次の XNUMX つのことに注意してください。

  • Selenium IDEは警告ウィンドウの「OK」ボタンを自動的にクリックするため、実際の警告メッセージは表示されません。
  • Selenium IDEは、ページのonload()関数内で発生するアラートを処理できません。ページが完全に読み込まれた後に生成されるアラートのみを処理できます。

この例では storeAlert コマンドを使用して、 Selenium IDEは実際のアラートを表示しなかったが、メッセージ自体は取得できた。

ステップ1) In Selenium IDE、ベースを設定します URL http://jsbin.com へ。 URL http://jsbin.com/usidix です。これらの jsbin スニペットは、 Firefox-プラグイン時代の問題であり、解決できない可能性があります。アラートを表示するボタンがあるページはすべて同じ結果を再現します。

ステップ2) 以下のようにスクリプトを作成してください。clickコマンドはGo!ボタンを対象とし、storeAlertはメッセージをalertMessageに格納し、echoはそれを出力します。

Selenium jsbinのアラートデモページに対して、クリック、storeAlert、echoコマンドを含むIDEスクリプト

ステップ3) スクリプトを実行しても、実際のアラートが表示されるとは限りません。下のログペインには、ダイアログが表示されなかったにもかかわらず、キャプチャされたメッセージが表示されます。

Selenium 再生後にstoreAlertによって取得されたアラートテキストを示すIDEログ

確認

確認メッセージは、アラートとは異なり、OKボタンとキャンセルボタンの両方が表示されるポップアップです。確認メッセージの処理に使用できるコマンドは、アラートのコマンドと同じです。

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • 店舗確認
  • 店舗確認プレゼント
  • 確認確認 / 確認確認しない
  • 確認済みであることを確認する / 確認済みではないことを確認する

さらに、これらのコマンドは Selenium 「OK」ボタンか「キャンセル」ボタンのどちらを選択するか。

  • 次の確認画面でOKを選択する / 次の確認画面でOKを選択して待機する
  • 次の確認でキャンセルを選択してください

これらのコマンドを配置してください 確認ボックスをトリガーするコマンドなので、 Selenium IDEはどのオプションを選択すべきかを事前に把握しています。そのため、スクリプト実行中に実際の確認ボックスが表示されることはありません。

ユーザーが「OK」ボタンを押したか「キャンセル」ボタンを押したかを報告するようにコード化されたボタンを備えたウェブページをテストしてみましょう。

ステップ1) In Selenium IDE、ベースを設定します URL http://jsbin.com へ。 URL http://jsbin.com/enifaf です。

ステップ2) 下記のようにスクリプトを作成してください。今回は最初に「OK」ボタンを押します。

Selenium IDEスクリプトで、ダイアログを開くクリックの前にchooseOkOnNextConfirmationを配置する

ステップ3) スクリプトを実行すると、実際の確認画面は表示されませんが、ウェブページにはどのボタンが押されたかが表示されます。 Selenium IDEが押されました。

確認ダイアログのOKボタンが押されたことを報告するテストページ

ステップ4) chooseOkOnNextConfirmation コマンドを chooseCancelOnNextConfirmation コマンドに置き換えて、スクリプトを再度実行してください。すると、ページには反対の選択結果が表示されます。

Selenium IDEスクリプトを編集し、chooseOkOnNextConfirmationの代わりにchooseCancelOnNextConfirmationを使用するようにしました。

複数 Windows

別のウィンドウを開くリンクをクリックした場合は、まず指示する必要があります。 Selenium IDEでは、ウィンドウ内の要素にアクセスする前に、そのウィンドウを選択する必要があります。従来のIDEでは、ウィンドウのタイトルをロケーターとして使用していました。

ウィンドウを切り替えるには、selectWindowコマンドを使用します。

タイトルが「First Window」であるリンク http://jsbin.com/ocinaj/1 を使用します。そのページの「here」ハイパーリンクをクリックすると、Facebook が新しいウィンドウで開きます。その後、指示に従います。 Selenium IDE で次の操作を実行します。

  • selectWindowコマンドを使用し、ウィンドウタイトルをロケーターとして指定することで、親ウィンドウから新しく起動したFacebookウィンドウに制御を移します。
  • 新しいウィンドウのタイトルを確認してください。
  • selectWindowコマンドを使用して、対象として「null」を指定して元のウィンドウを再度選択します。
  • 現在選択されているウィンドウのタイトルを確認してください。

上記の計画は、ここに示した4段階の手順に落とし込まれます。

親ウィンドウから新しいウィンドウへの切り替えと、再び親ウィンドウに戻る際の図

ステップ1) ベースを設定する URL http://jsbin.com へ。

ステップ2) 以下のようにスクリプトを作成します。

Selenium selectWindow、pause、verifyTitleを使用して2つのウィンドウ間を移動するIDEスクリプト

新しく起動したウィンドウのタイトルを読むには、読み込みが完了するまで待つためにpauseコマンドが必要です。

ステップ3) スクリプトを実行します。 注目してください。 テストケース 合格しました。つまり、ウィンドウを切り替えて、それぞれのタイトルを正常に確認できたということです。

グリーン通過の結果 Selenium 両方のウィンドウタイトルが検証された後のIDE

selectWindow ターゲットを「null」に設定すると、親ウィンドウが自動的に選択されることを常に覚えておいてください。この場合、「link=here」要素が見つかったウィンドウが選択されます。

注意: このチュートリアルが作成されて以降、Facebookはページタイトルを変更しました。スクリプト内の想定されるタイトルを適宜修正してください。

モダン Selenium これらのコマンドのIDEにおける同等コマンド

その Firefox-plugin IDE は、 Firefox WebExtensionsアーキテクチャに移行し、現在のChromeでは、 Firefox Edge拡張機能は、ほとんどのSeleneseコマンドの名前をスペースを含む形式に変更しました。動作は変更されていないため、以下の表を参照すれば、最新のインストール環境で上記のスクリプトを確認できます。

このチュートリアルのレガシーコマンド 電流プローブ Selenium IDEコマンド
店舗 店舗
echo echo
storeText テキストを保存
storeElementPresent 要素が存在することを保存する(または要素が存在することを表明する)
assertAlert / verifyAlert アサートアラート / 検証アラート
次の確認でOKを選択してください 次の確認画面で「OK」を選択してください。
次の確認でキャンセルを選択してください 次の確認画面でキャンセルを選択してください
selectWindow (title をターゲットとして) ハンドル=${handle}のウィンドウを選択します。

注目すべき違いが2つあります。以前の記事では触れられていなかったプロンプトには、独自のコマンドが追加されました。 次のプロンプトに答えてください ダイアログが表示される前に返答を計画し、 ウェブドライバーがプロンプトを表示して応答します 既に開いているプロンプトに入力します。また、ウィンドウの切り替えはページタイトルに依存しなくなりました。 店舗の窓ハンドル まずハンドルをキャプチャし、次に渡す ハンドル=${yourHandle} ウィンドウを選択する。この変更により、上記の注記で説明されている、サイトがページ名を変更するだけでスクリプトがウィンドウを見つけられなくなるという不具合モードが解消されます。 Selenium IDEプロジェクトサイト 現在使用可能なコマンドセット全体を表示します。

よくあるご質問

はい。${myVariable} と ${myvariable} は異なる変数を参照しており、保存されていない変数を参照すると、エラーが発生するのではなく空の文字列が返されます。無意味な空白を避けるため、スイート全体で統一された命名規則を使用してください。

はい。${ }構文はどの Target または値フィールドなので、openコマンド、XPath、またはCSSセレクタ内で機能します。このようにして、記録されたスクリプトが、実行時に取得されたデータに基づいて動作するスクリプトに変換されます。

Seleneseには数学演算子がありません。小さな値を指定してスクリプト実行コマンドを使用してください。 Java変数から値を読み込み、結果を返して、その戻り値を格納するスクリプト式。格納される値はすべて文字列として渡されるため、最初に文字列に変換する必要があります。

それらは単一のテスト内でのみ有効なものとして扱ってください。前のテストで設定された値に依存すると、テストスイートが順序依存になり、デバッグが困難になるため、テストに必要な値はそのテスト内に格納するか、最初にデータファイルから読み込むようにしてください。

プロンプトには、ボタンの選択肢だけでなく、テキストも必要です。プロンプトを開くコマンドの前に、値フィールドに応答を入力して次のプロンプトで応答を実行するか、ダイアログが既に画面に表示されている場合は、WebDriver Answer on visible promptを使用してください。

機械学習ツールは、平易な言葉で記述されたシナリオからコマンドシーケンスを提案し、レコーダーが生成するよりも堅牢なロケーターを提示できます。また、AIによるロケーター修復も有効です。なぜなら、格納された値が空になる一般的な原因は、要素の名前変更だからです。

はい。テストをエクスポートして Java or Python次に、Copilot にフラットなコマンドリストをページオブジェクトと再利用可能な待機処理にリファクタリングさせます。生成されたコードは、IDE が既に閉じている表示中のダイアログを前提としている場合が多いため、アラート処理は手動で確認してください。

タイトルによる選択は曖昧になり、間違ったウィンドウが選択される可能性があります。まさにこれが、現在のIDEがハンドルの使用を推奨する理由です。ウィンドウが開いた直後にstore window handleでハンドルを取得し、handle=${yourHandle}で切り替えます。