マルチステップのブラウザテスト用のセレクター
CSS では、セレクターとは、どの HTML オブジェクトをターゲットにするかをブラウザに伝える要素やその他の用語のパターンです。ブラウザテストを作成するときは、適切なオブジェクトをターゲットにできるほど具体的で、マイナーリリースの変更にも耐えられるほど堅牢なセレクターを選択することが重要です。
セレクターと一致するすべての要素は、コンソールを使用して検索できます。コンソールの使用方法の詳細については、 コンソールユーティリティ API リファレンスと HTML を学ぼう 。
Splunkソフトウェアがこのユースケースにどのように役立つか
この記事では、Splunk Synthetic Monitoring GUI でテストをゼロから作成するときに追加できるセレクターの例を紹介します。
Splunk シンセティックモニタリングは、ブラウザテスト用の API または GUI による JSON のインポートをサポートしています。ビルトインを使用してください。 クロームレコーダー シークレットブラウザーウィンドウでテストを作成するには、テストを再実行して検証し、Splunk Synthetic Monitoring にインポートします。レコーダーがキャプチャするよりも優れたセレクターが必要になる場合があることに注意してください。を参照してください デモはこちら 。
DOM を検査して要素を特定する
Chrome のウェブページで、関心のあるオブジェクトを右クリックして、をクリックします。 検査 。 これにより開発ツールが開き、マークアップを確認できます。
要素セレクターの読み取りと選択
-
マークアップを読んでいくうちに、探すべきパターンが見えてくるはずです。一般的に、HTML のパターンは以下のとおりです。
<element attribute="attributeValue">some content</element> - 要素識別子の中には他の識別子よりも信頼性が高いものがあります。ページ要素は、サイトの再設計によって変更される場合や、ユーザーセッション間で変更されることがあります。例えば、ページが React でレンダリングされる場合、属性値にはページを更新するたびに変化するランダムな文字列が含まれることがよくあります。つまり、テストの保守が容易になるように、セレクターを意図的に選ぶ必要があるということです。
- <div>のような曖昧な要素の使用は避けてください.
-
スタイル、アーキテクチャ、テキストはサイトのリリースによって変更される可能性があり、テストが中断される可能性があることに注意してください。たとえば、オブジェクトを右クリックして次のようなセレクターをコピーするとします。
/html/body/div/div[2]/div[3]/div/div/button[2]、これは壊れやすく、ページ構造を変更すると壊れてしまいます。代わりに、要素を調べてユニークな点を見つけて、以下の構文を使って意図的にセレクターを書いてください。 - Aria のラベル、ID、およびデータ属性は、一意で具体的になるように設計されているので、使い勝手が良いです。DOM を検査し、Splunk Synthetic Monitoring GUI 内でセレクターをテストするには、ある程度の練習が必要です。
- 複数の要素が同じ属性(CSS クラスなど)を持つことができるため、テストの対象となるのはページ上で最初に見つかった要素で、その基準を満たす要素のみであることに注意してください。セレクターに一致するすべての要素は次の方法で検索できます。 コンソールの使用 。
-
要素ツリーを上にスクロールして、ターゲット要素が iframe 内にあるかどうかを確認します。その場合は、次のステップを追加してください。
switch to iframeエレメントを操作する前。後で iframe の外部にある要素とやりとりする必要が生じた場合は、以下を追加してください。switch to mainiframe を終了するには
セレクターの例
エレメント、その属性、その属性の値、場合によってはエレメント自体の中身をターゲットにすることもできます。これは css、xpath、id、JS パス、さらに javascript を使用して行うことができます。Web サイトのレンダリング方法に基づいて最適なセレクターを見つければ、今後のテストの作成が容易になります。
- ザ・ id アトリビュート Web ページごとに重複する値があってはなりません。その場合は、ユニークセレクターとして理想的です。残念ながら常にそうであるとは限らず、すべての要素に id 属性が必要なわけでもありません。エレメントにこの属性があって、その値が static であるなら、これは素晴らしい選択です。
-
を使う
CSS
要素に信頼できる一意の識別子 (サインインボタンや主要な行動を促すフレーズなど) が付いているセレクター。形式は以下のとおりです。
element[attribute="attributeValue"]。この構文の詳細については、を参照してください。 CSS 属性セレクターに関する Mozilla ドキュメント 。例:-
HTML エレメントが次のようになっているとします。
<button aria-label="Sign in" class="buttonPrimary">Access my account</button>このクラスはページ上の任意の数のボタンに適用でき、ボタンのテキストはいつでも変更でき、その要素の A/B テストによって変更されることもあります。button[aria-label="Sign in"]は、この要素がボタンのままである可能性が高く、aria-label が静的でユニークなままであることがわかっている場合に、合成テストでこの要素を確実に識別できる可能性が最も高いセレクターです。 -
HTML 要素が次のようになっている場合
<a href="https://www.mysite.com/CTA2023" data-testid="header_CTA-text">Get this deal!</a>data-testid は信頼性が高くユニークな属性なので、これは素晴らしいことです。Synthetics テストに適したセレクターとしては、次のようなものがあります。a[data-testid="header_CTA-text"]
-
HTML エレメントが次のようになっているとします。
-
以下の例では以下を使用しています。
xpath
エレメントに属性があるセレクター
含む
静的値と動的値の両方。Xpath は上記の css と同様に使うこともできますが、ここでは値が静的です。
XPath についてさらに詳しく
。
-
フォーマットは一般的に
//element[rule(attribute,'attributeValue')] -
//input[starts-with(@id,'checkInDate')]
文字列 'CheckInDate' で始まる ID を持つ入力エレメントを検索します。- たとえば、属性値の末尾にユーザーセッションごとに変化する文字列が付加されることがあります。そのため、「start with」を使用すると、そのエレメントがチェックイン日-3489、チェックイン日-2467 などになるかどうかに関係なく、確実にそのエレメントがターゲットになります。
-
//*[contains(text(), 'Registration')]
テキスト文字列 'Registration' を含むすべてのエレメントを探します。- これは曖昧すぎることが多いですが、サイトによってはうまくいくこともあります。
- 大文字と小文字が区別されます。
-
xpath は、1 つ以上の属性を対象とする静的要素でも使用できます。この例では、同じページに複数のボタンがありますが、これらの属性値の両方を持つボタンは 1 つだけです。
//button[@aria-label='Sign in' and @data-link='alpha']
-
フォーマットは一般的に
-
使用
JavaScript
ここで、エレメント属性
含む
login や testout などの重要な機能や、別の種類のセレクターを使用するのが信頼できない場合に使われる信頼できる文字列です。
-
document.querySelector('a[href*="account/login?checkout"]').click();
hrefに「account/login?」という文字列を含むアンカー要素を探します。「チェックアウト」
-
-
使用
条件付き
JavaScript
エレメントがポップアップで表示される場合など、一貫性がない場合などは、その要素をクリックすべき場所です。
-
if(document.querySelector('button[data-click="close"]')){document.querySelector('button[data-click="close"]').click();} -
if(document.querySelector('[id^="close-button"]')){document.querySelector('[id^="close-button"]').click();}- 属性値が常に存在することが期待される場所 含む 「close-button」ですが、他の文字列が追加/先頭に付加されている可能性があります
- 別の方法として、 ヘッダーに Cookie を読み込む 該当する場合にはポップアップをバイパスします。
-
-
要素が "と呼ばれるものにネストされていることがあります
シャドードーム
」。これは大規模に開発する場合によくあることで、どのページを使用しても、他の js/css の影響を受けないように保護された再利用可能な要素ツリーを作成できます。「」を参照してください。
Mozilla のドキュメント
そしてこれ
YouTube チュートリアル
詳細については。
-
コードを調べて、要素を右クリックしてその JS Path をコピーすると、次のような結果になるかもしれません
document.querySelector("body > app-root > div > section > app-login").shadowRoot.querySelector("main > section > card > card-content > a.login-anchor"-
このエレメントのより堅牢なセレクターは
document.querySelector("app-login").shadowRoot.querySelector("a.login-anchor")これは入れ子になった要素に頼らずに動作します。
-
このエレメントのより堅牢なセレクターは
-
コードを調べて、要素を右クリックしてその JS Path をコピーすると、次のような結果になるかもしれません
次のステップ
以下に関連するその他のプロセスに興味があるかもしれません。 Splunk シンセティックモニタリングのブラウザテストの実行 :

