パス
パスとは、テストが連携するページ上の要素のことです。 要素は、ボタン、テキストフィールド、リンク、画像、段落など、テスト中にアサート、クリック、入力する必要があるものであれば、何でもかまいません。 各パスは以下のように定義されています。
ロケーターキー : その要素が何であるかを説明するラベルです(例:EDIT)。 ロケーターキーはすべて大文字で、スペースの代わりにアンダースコアを使用します。
XPath識別子 : HTMLページ内のその特定の要素を指すアドレスです(例: //button[contains(.,'Edit')]
)。
パスファイルはHTMLで書かれており、レンダリングするとロケーター名とロケーターを含むテーブルが表示されます。 パスファイルは、テストの集合が連携できるテストオブジェクトのライブラリと考えてください。
<html>
<head>
<title>Button</title>
</head>
...
<tbody>
<tr>
<td>EDIT</td>
<td>//button[contains(.,'Edit')]</td>
<td></td>
</tr>
<tr>
<td>EDIT_PENCIL</td>
<td>//a[contains(@class,'btn')]//i[contains(@class,'icon-pencil')]</td>
<td></td>
</tr>
<tr>
<td>EDIT_ROW</td>
<td>//*[@data-qa-id='row' and contains(.,'${key_rowEntry}')]//*[normalize-space(text())='Edit']</td>
<td></td>
</tr>
...
</tbody>
</table>
</body>
</html>
パスファイルを使用するメリット
再利用性の促進 : 同じ要素と連携する複数のテストを書く場合、連携ごとにロケーターをハードコードするのではなく、共有し再利用することができます。
テストメンテナンスのコスト削減 :ロケーターが複数のテストで使用され、UIの変更によりxpathが変更された場合、ロケーターのすべてのインスタンスを検索するのではなく、パスファイルを変更するだけで済みます。
ベストプラクティス
パスファイルの特定化と再利用性 : 正しい要素を記述し、その場所を特定するのに十分でありながら、テストされるシステム全体で再利用可能な一般的なものでなければなりません。 変数を使用すると、上記の EDIT_ROW
ロケーターのように、ロケーターを特定的かつ再利用可能にすることができます。
パスファイルの整理 :パスファイルを整理する方法は複数あります。 いくつかの提案は以下の通りです。
By Elements :これらのパスは、ボタン、チェックボックス、テキスト入力など、テストするシステム全体で再利用されるUIの非常に基本的な部分であることが多いです。
By Sections : このパスは、CKEditor、メニューバー、ツールバーなど、より複雑で、なおかつ再利用可能な、テスト対象のシステムのセクションです。
By Component/Portlets : これらのパスは、ユーザーおよびシステムマネジメントフィールドのように、コンポーネントに固有のものです。