変数を使ったロケータ定義

Magic Podの使い方 > 変数を使ったロケータ定義

※このページは、Appiumのロケータの仕組みをある程度理解している上級者向けのガイドです。

似たようなUI要素が多数ある場合、

  • たくさんのキャプチャを撮るのが大変
  • 自動生成されたUI要素が使いにくい場合、1つ1つに同じ修正をかけるのに手間がかかる

といった問題があります。これを変数を使って解決することができます。

変数つきのロケータを作成する

例としてAndroidのApiDemosアプリを使って解説します。このアプリはその名の通りAndroidの各種機能を一覧できるもので、非常に多くのメニューが階層化されていますがほとんどのロケータは同じ構造を持っています。

まずは変数つきのロケータとして使い回すUI要素を決めます。メニューやリンクなど、文字列を使って一致させるタイプのものが向いています。ここでは一番上にある「Accessibility」を選びます。Xpathを見ると、「Accessibility」という文字列をキーにして要素を特定していることが分かります。

図1 メニュー項目のロケータ

ロケータを追加して変数つきのものを作ります。ロケータの横にある+ボタンをクリックすると、ロケータを追加するための入力フィールドが表示されます。

図2 ロケータの追加入力フィールド

既存のロケータを見ながら入力します。種類は既存と同じ「xpath」、値は「Accessibility」以外の部分をそのまま書き写します。「Accessibility」となっていた箇所は「${1}」と書き換えます。このように数字の1から始まる変数名をつけておくと、Magic Podの内部でロケータの変数として扱われ、通常の変数とは違う動作になります。入力を終えたら「OK」をクリックして保存します。

図3 ロケータの保存

作成しただけではまだ以前のロケータが使われているので、最後にドロップダウンから今作ったロケータを選択しておきます。

図4 保存したロケータの選択

わかりやすいように要素の名前も変えておきます。

図5 要素名の変更

 
これでロケータの作成は完了です。このように変数を入れてしまうと、元々の「Accessibility」という要素をそのまま指し示すことはできないので注意してください。

変数つきのロケータを使う

今度はテストケースの中でこのロケータを使ってみます。先程作った「メニュー」という要素をテストケース上にドラッグ&ドロップすると、値入力欄が表示されます。ここに入力した値が先程の「${1}」の部分に代入されます。

 

図6 入力欄を含むUI要素

図7のように実際のメニューの文字列を入力します。「Custom View」メニューは「Accessibility」メニューをタップした後の画面に存在しますが、今回その画面のスクリーンショットは撮っていません。

図7 変数の値を入力

 

テストを実行してみると、意図通り「Accessibility」と「Custom View」が順にタップされているのが分かります。

図8 テスト実行結果

アプリケーションの構成やテストシナリオによって、この変数つきロケータを使う方法と通常通りすべての画面をキャプチャする方法の良し悪しは変わります。目的に合わせて使い分けてみてください。