ブラウザ駆動型テストで DOM 要素を識別する

ブラウザ内で、Web ページのすべての可視、不可視の要素が、オブジェクトの階層ツリー (ドキュメント オブジェクト モデル (DOM)) として表されます。Web ページの要素とやり取りするために、Silk Performer は、オブジェクト識別子、いわゆる ロケーター と呼ばれる概念を使用します。ロケーターは、現在の DOM の 1 つ以上の要素を識別する XPath クエリ文字列です。XPath に関する追加の情報については、http://www.w3.org/TR/xpath20/ を参照してください。

DOM 要素とやり取りするすべての API 呼び出しは、入力パラメータとしてロケーターを取ります。たとえば、API 呼び出し BrowserLinkSelect(“//a[@href=’www.companyxyz.com’]”) では、ロケーターは //a[@href=’www.companyxyz.com’] であり、その href 属性値として www.companyxyz.com を持つ最初のリンクを識別します (<a href=”www.companyxyz.com”>My Link</a> など)。

次の表に、Silk Performer でサポートされているすべての XPath コンストラクトを示します。

サポートされている XPath コンストラクト サンプル 説明
属性 a[@href='myLink'] 現在のコンテキストの子である、指定の href 属性を持つすべての DOM リンクを識別します。DOM 属性はすべてサポートされています。
インデックス a[1] 現在のコンテキストの子である最初の DOM リンクを識別します。XPath 内でのインデックスは 1 から始まります。
論理演算子: andor= a[(@href='microfocus' or @caption != 'b') and @id='p']
. .//div[@id='menuItem']/. 「 .」は、現在のコンテキスト (ファイル システムで周知の表記に類似) を示します。例は次と等価です://div[@id='menuItem']/
.. //input[@type='button']/../div オブジェクトの親を示します。たとえば、サンプルは、直接の子としてのボタンを含むすべての div を識別します。
/ /form 現在の親の直接の子であるすべてのフォームを検索します。./form は、/ form および form と等価です。
/ /form/input フォーム要素の子であるすべての入力要素を識別します。
// //input[type='checkbox'] 現在のオブジェクトに関係する階層内のすべてのチェック ボックスを識別します。
// //div[id='someDiv'//input[type='button'] コンテキストの直接または間接の子である div の直接または間接の子であるすべてのボタンを識別します。
/ //div 現在のコンテキストの直接または間接の子であるすべての div を識別します。

次の表に、Silk Performer でサポートされていない XPath コンストラクトを示します。

サポートされていない XPath コンストラクト
2 つの属性の相互比較 a[@caption = @href]
右側の属性名はサポートされていません。属性名は左側にある必要があります。 a['abc' = @caption]
and または or を使用した複数の XPath 表現の結合 a [@caption = 'abc'] or.//input
複数の属性をかぎ括弧で指定する。 div[@class = 'abc'] [@id = '123'] (代わりに div[@caption = 'abc' and @id = '123'] を使用)
複数のインデックスをかぎ括弧で指定する。 a[1][2]
タグ名または属性名に含まれるワイルドカード */@c?ption='abc'
論理演算子: not!= a[@href!='someValue']、not[@href='someValue']
クラスまたはクラスのワイルドカードを明示的に指定しないコンストラクト(ワイルドカードをクラス名の一部として含めるなど)。 //[@caption = 'abc']

以下のリストに、//[@caption ='abc def'] と一致するワイルドカードの例を示します: