ブラウザ内で、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 から始まります。 |
論理演算子: and、or、= | 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'] と一致するワイルドカードの例を示します: