Silk4J は、UI コントロールを検索するために XPath クエリ言語のサブセットをサポートしています。
以下の表には、Silk4J がサポートする構成子が一覧されています。
サポートするロケーター構成子 | サンプル | 説明 |
---|---|---|
// | //a |
現在のオブジェクトの子孫であるオブジェクトを識別します。 サンプルは、Web ページのハイパーリンクを識別します。 |
/ | /a |
現在のオブジェクトの直下の子であるオブジェクトを識別します。 下位の階層レベルにあるオブジェクトは認識されません。 サンプルは、現在のオブジェクトの直下の子である Web ページのハイパーリンクを識別します。 |
属性 | //a[@textContents='Home'] |
属性を指定してオブジェクトを識別します。 サンプルは、テキスト Home を持つハイパーリンクを識別します。 |
索引 |
サンプル 1: //a[3] サンプル 2: //a[@textContents='Home'][2] |
複数のオブジェクトが検出された場合にオブジェクトの出現番号を指定して識別します。 ロケーター内での索引は 1 から始まります。 サンプル 1 は 3 番目のハイパーリンクを、サンプル 2 はテキスト Home を持つ 2 番目のハイパーリンクを識別します。 |
論理演算子:and、or、not、=、!= |
サンプル 1: //a[@textContents='Remove' or @textContents='Delete'] サンプル 2: //a[@textContents!='Remove'] サンプル 3: //a[not(@textContents='Delete' or @id='lnkDelete') and @href='*/delete'] |
論理演算子を使用して属性を組み合わせてオブジェクトを識別します。 サンプル 1 はキャプション Remove または Delete のどちらかを持つハイパーリンクを識別し、サンプル 2 は Remove でないテキストを持つハイパーリンクを識別し、サンプル 3 はさまざまな論理演算子を組み合わせる方法を示しています。 |
.. |
サンプル 1: //a[@textContents='Edit']/.. サンプル 2: //a[@textContents='Edit']/..//a[@textContents='Delete'] |
オブジェクトの親を識別します。 サンプル 1 はテキスト Edit を持つハイパーリンクの親を識別し、サンプル 2 はテキスト Edit を持つハイパーリンクと同列にあるテキスト Delete を持つハイパーリンクを識別します。 |
* |
サンプル 1: //*[@textContents='Home'] サンプル 2: /*/a |
ハイパーリンク、テキスト フィールド、またはボタンのような型を考慮せずにオブジェクトを識別します。 サンプル 1 は型とは無関係に指定したテキスト コンテンツを持つオブジェクトを識別し、サンプル 2 は 現在のオブジェクトの第 2 下位レベルにあるハイパーリンクを識別します。 |
以下の表には、Silk4J がサポートしていないロケーター構成子が一覧されています。
サポートしないロケーター構成子 | サンプル |
---|---|
右辺、左辺ともに属性を指定して比較する。 | //a[@textContents = @id] |
属性名を右辺に指定することはサポートされません。 属性名は左辺に指定する必要があります。 | //a['abc' = @id] |
複数のロケーターを and あるいは or で結合する。 | //a[@id = 'abc'] or ..//Checkbox |
複数の属性をかぎ括弧で指定する。 |
//a[@id = 'abc'] [@textContents = '123']
(代わりに、 //a [@id = 'abc' and @textContents = '123'] を使用してください) |
複数の索引をかぎ括弧で指定する。 | //a[1][2] |
クラスあるいはクラス名の一部にワイルドカードを含むクラス・ワイルドカードを明示的に指定しない構成子。 |
//[@id = 'abc']
(代わりに、 //*[@id = 'abc'] を使用してください) "//*//a[@id='abc']" |