Appium Vegaドライバーのロケーター戦略
ロケーター戦略とは、テストの自動化中にアプリ内のユーザーインターフェイス(UI)要素を検索して特定するために使用される方法です。これらの戦略は、ボタン、テキストフィールド、その他のUIコンポーネントなど、画面上の特定の要素を見つける方法をAppiumに指示する検索パターンとして機能します。
サポートされている戦略
Appium Vegaドライバーでは、UiSelectorとXMLパス言語(XPath)がサポートされています。その他のセレクター戦略は、このリリースではサポートされていません。
UiSelector
ネイティブの自動化フレームワークを利用してUI要素を特定する、プラットフォーム固有のロケーター戦略。プロパティと階層関係に基づいて、要素の選択を正確に制御できます。
使用例:
使用例を表示するには、タブを選択してください。
element = driver.find_element("UiSelector", '{"args": {"text": "要素のテキスト"}}')
element = driver.findElement(AppiumBy.ByAndroidUIAutomator.androidUIAutomator("{\"args\": {\"role\":\"edit\"} }")`\
XPath
XMLのような構造内の要素のナビゲーションと選択を可能にするクエリ言語。
使用例:
使用例を表示するには、タブを選択してください。
element = driver.find_element(by="xpath", value="//[contains(@description, \"ミュージック\")]"
element = driver.findElement(AppiumBy.xpath("//[contains(@description, \"ミュージック\")]"));
const element = await driver.$('//[contains(@description, \"ミュージック\")]');
element = @driver.wait { |d| d.find_element :xpath, '//[contains(@description, \"ミュージック\")]' }
主な構成要素
-
軸 - 子孫、祖先、後続など、検索の方向を指定します。
// 子孫軸 "//button" // 子孫であるすべてのbutton "/button" // 直下の子であるbutton -
ノードテスト - 要素、属性、text()など、選択するノードタイプを指定します。
"//*" // 任意の要素 "//button" // button要素 "//text()" // テキストノード -
述部 - 属性値、位置、カスタム関数などのさまざまな条件に基づいて、選択されたノードをフィルタリングします。
"//button[@text='ログイン']" // 完全一致 "//button[contains(@text, 'ログイン')]" // 部分一致
特殊なユースケース
// ルート要素
driver.findElement(By.xpath("/root"));
// 説明による要素の選択
driver.findElement(By.xpath("//*[contains(@description, 'ミュージック')]"));
// 複雑な階層の選択
driver.findElement(By.xpath("//parent/*[2]//child[@visible='true']"));
セレクター戦略の比較
| 機能 | UiSelector | XPath |
|---|---|---|
| 対応プラットフォーム | プラットフォーム固有 | クロスプラットフォーム |
| パフォーマンス | 一般に高速 | 場合により低速 |
| 信頼性 | 信頼性が高い | UIの変更により機能しなくなることがある |
| 複雑さ | 中 | 場合により複雑 |
| メンテナンス | プラットフォーム固有のテストが容易 | クロスプラットフォームテスト向き |
| デバッグのサポート | ネイティブツールを利用可能 | 標準のXMLツール |
| メモリ使用量 | 少ない | 複雑なクエリの場合は多い |
ベストプラクティス
-
適切な戦略の選択
- プラットフォーム固有のテストにはUiSelectorを使用します。
- クロスプラットフォームの互換性が求められる場合はXPathを使用します。
- パフォーマンスが重要な場合はUiSelectorを選択します。
-
要素の特定
- 可能な場合は一意の識別子を使用します。
- 絶対パスを使用しないようにします。
- セレクターはできるだけシンプルにします。
- セレクターの信頼性を定期的に検証します。
-
パフォーマンスに関する考慮事項
- 複雑なXPathクエリはテストの実行時間に影響する可能性があります。
- 頻繁に使用する要素をキャッシュします。
- 可能な場合はアプリ固有のIDを使用します。
-
メンテナンスに関するヒント
- ロケーター戦略を文書化します。
- ロケーターを定期的に確認します。
- UIの変更に合わせて更新を行います。
- クロスプラットフォームの互換性を保ちます。
- テストコードで意味のわかる名前を使用します。
Last updated: 2025年9月30日

