のロケーター Selenium

ロケーターとは何ですか?

ロケーターは、次のことを伝えるコマンドです。 Selenium IDE の GUI 要素 (テキストなど) Box、ボタン、チェック Boxes など) を操作する必要があります。正しい GUI 要素の識別は、自動化スクリプトを作成するための前提条件です。しかし、GUI 要素を正確に識別することは、思ったよりも難しいです。間違った GUI 要素で作業したり、要素がまったくない状態で作業してしまうこともあります。そのため、 Selenium GUI 要素を正確に見つけるための多数のロケーターを提供します

ロケーターを必要としないコマンドもあります (「open」コマンドなど)。ただし、それらのほとんどは要素ロケーターを必要とします。 Selenium ウェブドライバー。

ロケーターの選択は、テスト対象のアプリケーションに大きく依存します。このチュートリアルでは、これらのアプリケーションがサポートするロケータに基づいて、Facebook、new tours.demautを切り替えます。同様に、 テスト プロジェクトでは、上記の要素ロケーターのいずれかを選択します。 Selenium Webdriver、アプリケーションのサポートに基づいて。

IDで探す

ID は要素ごとに一意であると考えられているため、これは要素を検索する最も一般的な方法です。

Target フォーマット: id=要素のID

この例では、Facebookをテストアプリとして使用します。 Mercury ツアーでは ID 属性は使用されません。

ステップ1) このチュートリアルが作成されて以来、Facebook はログイン ページのデザインを変更しました。 このデモページを使用してください http://demo.guru99.com/test/facebook.html テスト用です。Firebug を使用して「メールまたは電話」テキスト ボックスを調べ、その ID をメモします。この場合、ID は「email」です。

IDで探す

ステップ2) 起動する Selenium IDEで「id=email」と入力し、 Target ボックス。検索ボタンをクリックすると、「メールまたは電話」テキストボックスが黄色にハイライトされ、緑の枠で囲まれます。 Selenium IDE はその要素を正しく見つけることができました。

IDで探す

名前による検索

名前による要素の検索は、ID による検索とよく似ていますが、 「名前=」 代わりにプレフィックスを付けます。

Target フォーマット: name=要素の名前

次のデモンストレーションでは、 Mercury すべての重要な要素に名前が付いているため、ツアーになります。

ステップ1) MFAデバイスに移動する http://demo.guru99.com/test/newtours/ Firebug を使用して「ユーザー名」テキスト ボックスを調べます。その名前属性をメモします。

名前による検索

ここでは、要素の名前が「userName」であることがわかります。

ステップ2) In Selenium IDEでは、 Target ボックスをクリックし、[検索] ボタンをクリックします。 Selenium IDE はユーザー名テキスト ボックスを強調表示することでそれを見つけることができます。

名前による検索

フィルターを使用して名前で要素を検索する方法

フィルターは、複数の要素が同じ名前を持つ場合に使用できます。 フィルターは、同じ名前の要素を区別するために使用される追加の属性です。

Target フォーマット: 名前=要素の名前フィルター=フィルターの値

例を見てみましょう –

ステップ1) にログオンします Mercury ツアー。

にログオンします Mercury ユーザー名とパスワードに「tutorial」を使用したツアー。以下に示すフライト検索ページに移動します。

フィルターを使用して名前で要素を検索する

ステップ2) firebug を使用する場合は、VALUE 属性を使用します。

Firebug を使用すると、往復ラジオ ボタンと片道ラジオ ボタンが同じ「tripType」という名前になっていることがわかります。 ただし、それらは異なる VALUE 属性を持っているため、それぞれをフィルターとして使用できます。

フィルターを使用して名前で要素を検索する

ステップ3) 最初の行をクリックします。

  • 最初に [One Way] ラジオ ボタンにアクセスします。 エディターの最初の行をクリックします。
  • コマンドボックスで Selenium IDE で「クリック」コマンドを入力します。
  • Target ボックスに「name=tripType value=oneway」と入力します。「value=oneway」の部分がフィルターになります。

フィルターを使用して名前で要素を検索する

ステップ4) 「検索」ボタンをクリックします。

注意してください Selenium IDE は、一方向ラジオ ボタンを緑色で強調表示できます。これは、VALUE 属性を使用して要素に正常にアクセスできることを意味します。

フィルターを使用して名前で要素を検索する

ステップ5) [片道] ラジオ ボタンを選択します。

キーボードの「X」キーを押して、このクリック コマンドを実行します。 [One Way] ラジオ ボタンが選択されていることに注目してください。

フィルターを使用して名前で要素を検索する

「ラウンドトリップ」ラジオボタンでもまったく同じことを行うことができます。今回はターゲットとして「name=tripType value=roundtrip」を使用します。

リンクテキストによる検索

このタイプの CSS ロケーターは Selenium ハイパーリンク テキストにのみ適用されます。ターゲットの前に「link=」を付け、その後にハイパーリンク テキストを続けることで、リンクにアクセスします。

Target フォーマット: リンク=リンク_テキスト

この例では、 Mercury ツアーのホームページ。

ステップ1)

  • まず、ログオフしていることを確認してください Mercury ツアー。
  • に行く Mercury ツアーのホームページ。

ステップ2)

  • Firebug を使用して、「REGISTER」リンクを調べます。 リンク テキストは と タグの間にあります。
  • この場合、リンクテキストは「REGISTER」です。 リンクテキストをコピーします。

リンクテキストによる検索

ステップ3) Firebug のリンク テキストをコピーし、次の場所に貼り付けます。 Selenium IDEの Target ボックス。先頭に「link=」を付けます。

リンクテキストによる検索

ステップ4) 「検索」ボタンをクリックすると、 Selenium IDE は REGISTER リンクを正しく強調表示できました。

リンクテキストによる検索

ステップ5) さらに確認するには、コマンドボックスに「clickAndWait」と入力して実行します。 Selenium IDE はその REGISTER リンクをクリックして、以下に示す登録ページに移動できるはずです。

リンクテキストによる検索

DOM (ドキュメント オブジェクト モデル) による検索

この ドキュメントオブジェクトモデル(DOM)簡単に言えば、HTML 要素を構造化する方法です。 Selenium IDEはページ要素にアクセスする際にDOMを使用することができます。この方法を使用すると、 Target ボックスは常に「dom=document…」で始まります。ただし、「dom=」プレフィックスは通常削除されます。 Selenium IDE は、キーワード「ドキュメント」で始まるすべてのものを DOM 内のパスとして自動的に解釈できます。 Selenium とにかく。

DOM を通じて要素を見つけるには 4 つの基本的な方法があります。 Selenium:

  • getElementByIdを
  • getElementsByName
  • dom:name (名前付きフォーム内の要素にのみ適用されます)
  • dom:インデックス

DOM による検索 – getElementById

最初のメソッドに注目してみましょう。DOM の getElementById メソッドを使用します。 Selenium。 構文は次のようになります。

構文

document.getElementById("id of the element")

  • 要素の ID = アクセスする要素の ID 属性の値です。 この値は常に括弧 ("") で囲む必要があります。

ステップ1) このデモページを使用してください http://demo.guru99.com/test/facebook.html そこに移動し、Firebug を使用して「ログイン状態を維持する」チェックボックスを調べます。その ID をメモします。

DOM による検索 – getElementById

使用すべき ID は「persist_box」であることがわかります。

ステップ2) Open Selenium IDEと Target ボックスに「document.getElementById(“persist_box”)」と入力し、「検索」をクリックします。 Selenium IDEは「ログイン状態を維持する」チェックボックスを見つけることができるはずです。チェックボックスの内部をハイライトすることはできませんが、 Selenium IDE では、以下に示すように要素を明るい緑色の境界線で囲むことができます。

DOM による検索 – getElementById

DOM による検索 – getElementsByName

getElementById メソッドは、一度に 0 つの要素のみにアクセスできます。それは、指定した ID を持つ要素です。 getElementsByName メソッドは異なります。 指定した名前を持つ要素の配列を収集します。 XNUMX から始まるインデックスを使用して個々の要素にアクセスします。

DOM による検索 – getElementsByName

getElementByIdを

  • 取得できる要素は XNUMX つだけです。
  • その要素には、getElementById() のかっこ内に指定した ID が付けられます。

DOM による検索 – getElementsByName

getElementsByName

  • すべて同じ名前を持つ要素のコレクションを取得します。
  • 各要素には配列と同様に 0 から始まる番号が付けられます。
  • 以下の getElementsByName の構文で、角括弧内にインデックス番号を入力して、アクセスする要素を指定します。

構文

document.getElementsByName(“name“)[index]

  • name = 'name' 属性で定義された要素の名前
  • Index = getElementsByName の配列内のどの要素が使用されるかを示す整数。

ステップ1) MFAデバイスに移動する Mercury ツアーのホームページにアクセスし、ユーザー名とパスワードとして「tutorial」を使用してログインします。 Firefox フライトファインダー画面が表示されます。

ステップ2) Firebug を使用して、ページの下部にある XNUMX つのラジオ ボタン (エコノミー クラス、ビジネス クラス、およびファースト クラスのラジオ ボタン) を調べます。 これらはすべて「servClass」という同じ名前を持っていることに注意してください。

DOM による検索 – getElementsByName

ステップ3) まずは「エコノミークラス」のラジオボタンにアクセスしてみましょう。これら 0 つのラジオ ボタンすべてのうち、この要素が最初に来るため、インデックスは XNUMX になります。 Selenium IDE で「document.getElementsByName(“servClass”)[0]」と入力し、[検索] ボタンをクリックします。 Selenium IDE はエコノミークラスのラジオ ボタンを正しく識別できる必要があります。

DOM による検索 – getElementsByName

ステップ4) インデックス番号を1に変更して、 Target はdocument.getElementsByName(“servClass”)[1]になります。検索ボタンをクリックして、 Selenium 以下に示すように、IDE は「ビジネス クラス」ラジオ ボタンを強調表示できるはずです。

DOM による検索 – getElementsByName

DOM による検索 – dom:name

前述したように、このメソッドは、アクセスしている要素が名前付きフォーム内に含まれている場合にのみ適用されます。

構文

document.forms[“name of the form“].elements[“name of the element“]

  • フォームの名前 = アクセスする要素を含む form タグの name 属性の値
  • 要素の名前 = アクセスする要素の name 属性の値

ステップ1) MFAデバイスに移動する Mercury ツアーのホームページ http://demo.guru99.com/test/newtours/ Firebug を使用してユーザー名テキスト ボックスを調べます。このテキスト ボックスが「home」という名前のフォームに含まれていることに注意してください。

DOM による検索 – dom:name

ステップ2) In Selenium IDE で「document.forms[“home”].elements[“userName”]」と入力し、「検索」ボタンをクリックします。 Selenium IDE は要素に正常にアクセスできる必要があります。

DOM による検索 – dom:name

DOM による検索 – dom:index

このメソッドは、名前ではなくフォームのインデックスを使用するため、要素が名前付きフォーム内にない場合にも適用されます。

構文

document.forms[index of the form].elements[index of the element]

  • フォームのインデックス = ページ全体に対するフォームのインデックス番号 (0 から始まる)
  • 要素のインデックス = 要素を含むフォーム全体に対する要素のインデックス番号 (0 から始まる)

「電話」テキストボックスにアクセスします Mercury ツアー登録ページ。このページのフォームには名前と ID 属性がないので、これは良い例になります。

ステップ1) MFAデバイスに移動する Mercury ツアー登録ページにアクセスし、電話番号テキスト ボックスを調べます。このテキスト ボックスを含むフォームには ID 属性と名前属性がないことに注意してください。

DOM による検索 – dom:index

ステップ2) に「document.forms[0].elements[3]」と入力します。 Selenium IDEの Target ボックスをクリックし、[検索] ボタンをクリックします。 Selenium IDE は電話テキスト ボックスに正しくアクセスできる必要があります。

DOM による検索 – dom:index

ステップ3) あるいは、インデックスの代わりに要素の名前を使用しても、同じ結果が得られます。に「document.forms[0].elements[“phone”]」と入力します。 Selenium IDEの Target ボックス。電話番号テキスト ボックスは引き続き強調表示されます。

DOM による検索 – dom:index

XPathによる検索

XPath は、XML (Extensible Markup Language) ノードを見つけるときに使用される言語です。 HTML は XML の実装と考えることができるため、次のようにすることもできます。 XPath HTML要素を見つける際に。

  • 利点: class、name、または id 属性を持たない要素も含め、ほぼすべての要素にアクセスできます。
  • デメリット: これは、さまざまなルールや考慮事項が多すぎるため、要素を識別する最も複雑な方法です。

幸いなことに、Firebug は XPath を自動的に生成できます。 Selenium ロケーター。次の例では、前に説明した方法ではアクセスできない画像にアクセスします。

ステップ1) MFAデバイスに移動する Mercury Tours ホームページにアクセスし、Firebug を使用して、黄色の「リンク」ボックスの右側にあるオレンジ色の四角形を調べます。下の画像を参照してください。

XPathによる検索

ステップ2) 要素の HTML コードを右クリックし、[XPath をコピー] オプションを選択します。

XPathによる検索

ステップ3) In Selenium IDE、スラッシュ「/」を1つ入力します。 Target ボックスに、前の手順でコピーした XPath を貼り付けます。 あなたのエントリ Target ボックスは 2 つのスラッシュ「//」で始まる必要があります。

XPathによる検索

ステップ4) 「検索」ボタンをクリックします。 Selenium IDE では、以下に示すようにオレンジ色のボックスを強調表示できるはずです。

XPathによる検索

まとめ

ロケーターの使用法の構文

方法 Target 構文
ID別 id=要素のid id=メール
名前で name=要素の名前 名前=ユーザー名
フィルターを使用した名前による 名前=要素の名前フィルター=フィルターの値 名前=旅行タイプ 値=片道
リンクテキスト別 リンク=リンクテキスト リンク=登録