Appiumを使ってiOS/Androidの要素を取得する方法の数々に以下のAndroidによる要素の取得方法を追加しました。
find_element(xpath: "//android.widget.TextView[@text="#{element_name}"]")
find_element(xpath: "//android.widget.Button[@text="#{element_name}"]")
Androidでは、Android SDKに同封される uiautomatorviewer コマンドで要素を表示確認します。そのツールで text 要素に表示される文言からその要素を特定する場合、上記のようにXPathの記述で要素を特定することが可能です。
利点
- contentDescription指定が不要
- 表示されている文言ベースで要素を指定可能
- 比較的手軽
欠点
- TextViewやButtonなど、表示される要素が異なると使い分けを行う必要がある
- 共通でresorceIDやcontentDescriptionで指定可能であれば、そのような使い分けはしなくてもよくなる
- テキストが表示されない要素を特定することは不可能
- UIの表示文言にテストの安定性が左右される
- システムの言語設定に依存したり…
ここまで揃えば、iOS/Android共に多くのシナリオを比較的容易に自然言語でシナリオ自動化できそう。