要素の存在を確認し、コマンドを待機します Selenium
⚡ スマートサマリー
要素の存在と waitFor コマンドを確認する Selenium IDEは、ページにテストが期待する要素とテキストが含まれていることを確認し、次のステップが実行される前に、動的な条件が真になるまで再生を一時停止します。

記録された Selenium IDE スクリプトはクリックや入力は行いますが、アプリケーションが正しく動作したかどうかを単独で判断することはありません。その判断を行うのが、以下の2つのコマンド群です。 確認する ページの状態をチェックするコマンド、そして wait ページがチェックできる状態になるまで実行を保留するコマンド。
⚠️ バージョンに関する注意: 以下のスクリーンショットはオリジナルからのものです Firefox-プラグイン Selenium IDE はもはや配布されておらず、キャメルケースの Selenese 名を使用しています。現在の IDE は Chrome です。 Firefox とエッジ ブラウザの拡張機能ここで説明した動作は依然として適用されますが、いくつかのコマンド名が変更されています。マップping 表はこの記事の後半に掲載されており、すべてのオリジナルコマンドとスクリーンショットは公開されたとおりにそのまま保存されています。
要素の存在を確認する
要素の存在を確認するには、次の 2 つのコマンドを使用できます。
- verifyElementPresent – 指定された要素がページ内で見つかった場合はTRUEを返し、そうでない場合はFALSEを返します。
- verifyElementNotPresent – 指定された要素がページ内のどこにも見つからなかった場合は TRUE を返します。 存在する場合は FALSE。
どちらのコマンドも要素を受け取ります ロケータ に選出しました。 Target フィールド — ID、名前、CSSセレクタ、リンクテキスト、または XPath 式 — どちらも値を必要としません。
以下のテストスクリプトは、UserNameテキストボックスが Mercury ツアーのホームページには「First Name」テキストボックスは表示されません。First Nameテキストボックスは実際にはツアーの登録ページにある要素です。 Mercury ツアーはホームページには載っていません。
なぜなら、これらは 確認する コマンドではなく アサート コマンドが失敗した場合、ログにエラーが記録されますが、残りの手順は引き続き実行されます。この違いについては、後ほど詳しく説明します。
コマンド内の特定のテキストの存在を確認する Selenium
要素が存在するかどうかを確認するだけでは十分でない場合もあります。多くの場合、テストではユーザーに表示されるテキストを検証する必要があります。2つのテキストコマンドは、そのようなケースに対応します。
- verifyTextPresent – 指定されたテキスト文字列がページ内のどこかに見つかった場合はTRUEを返し、そうでない場合はFALSEを返します。
- verifyTextNotPresent – 指定されたテキスト文字列がページ内のどこにも見つからなかった場合は TRUE を返します。 見つかった場合は FALSE
これらのコマンドでは大文字と小文字が区別されることに注意してください。
以下のログは、同じページが同じフレーズの異なるスペルで2回チェックされたことを示しています。
上記のシナリオでは、「Atlanta to Las Vegas」と「atlanta to Las Vegas」は異なる扱いを受けました。これは、「Atlanta」の「A」が前者では大文字、後者では小文字だったためです。verifyTextPresentコマンドをそれぞれに対して実行したところ、一方は合格、もう一方は不合格となりました。
要素の特定の位置を確認する
レイアウトの欠陥がロケータを壊すことは稀であるため、存在チェックではそれらを見逃してしまう。位置指定コマンドはこのギャップを埋める。
Selenium IDE は、要素の位置を、ブラウザ ウィンドウの左端または上端からの距離 (ピクセル単位) を測定することによって示します。
- verifyElementPositionLeft – 指定されたピクセル数がページの左端からの要素の距離と一致するかどうかを検証します。 指定された値が左端からの距離と一致しない場合、FALSE が返されます。
- 要素の位置を確認する – 指定されたピクセル数がページの上端からの要素の距離と一致するかどうかを検証します。 指定された値が上端からの距離と一致しない場合、FALSE が返されます。
以下のスクリプトは、予想されるピクセルオフセットを「値」列に記録します。
これらの2つのコマンドは慎重に扱ってください。ピクセルオフセットはウィンドウサイズ、ズームレベル、インストールされているフォントによって変化するため、あるマシンで正常に動作する固定値でも、別のマシンでは失敗する可能性があります。
コマンドを待つ Selenium
検証コマンドは画面に表示されているものしか検査できないため、アプリケーションが正常に動作していても、早すぎるタイミングで実行されるとチェックが失敗します。待機コマンドはこのタイミングの問題を解決します。
以下は待機コマンドの種類です。 Selenium
andWait コマンド
これらは、次のコマンドに進む前に、新しいページが読み込まれるのを待機するコマンドです。
例としては、
- クリックして待つ
- typeAndWait
- 選択して待つ
以下に記録した手順が示すように、それらはすべてAndWaitという接尾辞が付いた通常のアクションコマンドです。
waitFor コマンド
これらは、(新しいページのロードに関係なく) 次のコマンドに進む前に、指定された条件が true になるのを待つコマンドです。 これらのコマンドは、ページ全体をリロードせずに値や要素を変更する AJAX ベースの動的 Web サイトでの使用に適しています。 例としては次のものが挙げられます。
- タイトル待ち
- waitForTextPresent
- アラート待ち
以下の Facebook のシナリオを考えてみましょう。
「click」と「waitForTextPresent」の組み合わせを使用して、「誕生日の提供」というテキストの存在を確認できます。
「誕生日を入力する必要があるのはなぜですか?」をクリックしてもページが読み込まれないため、clickAndWait は使用できません。 リンク。 そうした場合、テストは失敗します
同じルールは、ナビゲーションではなくスクリプトによって挿入されたコンテンツにも適用されます。 AJAX駆動の画面 ほとんどの場合、andWaitではなくwaitForを使用する必要があります。
Assert、Verify、waitFor コマンド Selenium IDE
初心者はしばしば間違ったファミリーを選択し、スイートが最初の欠陥で停止する理由や、すべての欠陥が20件の失敗として報告される理由を疑問に思う。 trac1に戻る。3つの接頭辞は3つの異なる質問に答えている。
| 接頭辞 | 何それがありません | 失敗した場合 | 最適な用途 |
|---|---|---|---|
| アサート | 状態を即座にチェックします | 失敗をログに記録し、テストケースを停止します。 | 前提条件 ― 他のすべてが意味を成す前に必ず成功しなければならないログイン |
| 確認する | 状態を即座にチェックします | 失敗をログに記録し、次のコマンドに進みます。 | 独立したチェック、例えば1つの確認ページに複数のラベルを貼るなど |
| 待機 | 条件が真になるまで世論調査を行う | タイムアウトが経過するとエラーをログに記録し、その後処理を続行します。 | 遅れて表示されるものすべて ― AJAXレスポンス、スピナー、ダイアログなど |
実用的なパターンは、これら3つを組み合わせます。まず、アクセスしたページをアサートし、次に非同期で到着する要素をwaitForし、最後に各フィールドを個別に検証します。この順序で実行することで、ナビゲーションの不具合が1つでも発生すればテストは早期に終了し、いくつかの外観上の不一致はすべて1回の実行で報告されます。同じ規律は、 Selenium コードで記述されたテスト。これに相当するものは、ハードアサーション、ソフトアサーション、明示的な待機です。
現在の検証コマンドと待機コマンド Selenium IDE
その Firefox上記のスクリーンショットを作成したプラグインIDEは廃止され、コマンドセットは現在のブラウザ拡張機能用に再構築されました。Seleneseの名前はいくつか残され、いくつかは名前が変更され、いくつかは削除されました。以下の表は、この記事で使用されているコマンドを、公式ドキュメントから取得した現在の同等のコマンドにマッピングしたものです。 Selenium IDEコマンドリファレンス.
| レガシー・セレネーゼ・コマンド | 現在のIDEのコマンド |
|---|---|
| verifyElementPresent | 要素が存在することを確認する |
| verifyElementNotPresent | 要素が存在しないことを確認する |
| verifyTextPresent | テキストを検証する(ページ全体ではなく、要素ロケーターの範囲に限定) |
| verifyTextNotPresent | テキストではないことを検証する(要素ロケーターにスコープ指定) |
| タイトルを確認する | タイトルを確認する |
| 要素の左位置を確認する / 要素の上位置を確認する | 同等のものはなく、立場表明は取り下げられた。 |
| clickAndWait、typeAndWait、selectAndWait | AndWaitサフィックスは不要です。openコマンドは既にページの読み込みを待機します。 |
| waitForElementPresent | 要素が存在するまで待機します(待機時間はミリ秒単位)。 |
| アラート待ち | ダイアログが表示された後、アラートをアサートするか、アラートテキストを検証する |
日々の作業において最も重要な違いは2つあります。まず、現在の待機コマンド(要素が存在するまで待機、要素が表示されているまで待機、要素が編集可能になるまで待機、およびそれらの否定版)はそれぞれミリ秒単位で明示的な待機時間を指定するため、処理の遅いステップがグローバルなタイムアウトを共有する必要がなくなりました。次に、ページ全体のテキスト検索が廃止されました。テキストの検証にはロケーターが必要となり、通常はより精度の高いチェックが可能になります。
VerifyコマンドとwaitForコマンドでよくあるエラー
これらのコマンドに関する報告されている問題のほとんどは、IDEの不具合ではありません。以下に、最も頻繁に発生する不具合とその解決策を一覧で示します。
- 要素は存在するが、それでもチェックが失敗する。 存在状態と可視状態は異なる状態です。CSSルールによって隠された要素もDOM内には存在するため、テストがユーザーの実際の視覚状態に依存する場合は、存在チェックと要素の可視状態確認を組み合わせましょう。
- テキストチェックは、見た目が全く同じ文言に対して失敗する。 デザインドキュメントからコピーされた改行なしスペース、末尾の空白、および波括弧付きアポストロフィはすべて、完全一致を妨げます。期待される文字列を貼り付けるのではなく、手入力してください。
- 明らかにページが読み込まれた後、待機コマンドがタイムアウトする。 要素は通常、iframe 内にあります。最初に select frame を実行してください。そうしないと、ロケーターが誤ったドキュメントに対して評価されます。
- clickAndWait がシングルページアプリケーションでハングアップする。 ナビゲーションは発生しないため、待機する対象はありません。代わりに、クリック操作と適切なwaitForコマンドを追加してください。
- ローカル環境では位置チェックが成功するが、ビルドサーバー上では失敗する。 画面サイズとフォントのレンダリングは異なります。存在チェックまたはテキストチェックを行うか、テスト開始時にウィンドウサイズを明示的に設定してください。
- スイート全体が最初の不一致で停止する。 本来検証コマンドを実行するべき箇所で、アサートコマンドが記録されました。プレフィックスを変更すると、最初の失敗だけでなく、すべての失敗が報告されます。
スクリプトがこれらの罠を突破したら、次のステップは通常 実行時値を変数に格納する そのため、チェックはハードコードされた文字列ではなく、実際のデータと比較されます。






