0
私は単純なユースケースを持っています。アンドロイドアプリ内でボタンを押すと、ブラウザアプリがURLを開きます。Appium:アンドロイドシステムのやりとりを扱う
[開く]ダイアログボックスのポップアップが表示され、ブラウザまたはChromeを選択できます。これを自動化しようとすると
<android.widget.ListView resource-id="android:id/resolver_list">
<android.widget.LinearLayout>
<android.widget.ImageView resource-id="android:id/icon">
<android.widget.LinearLayout>
<android.widget.TextView resource-id="android:id/text1">
<android.widget.LinearLayout>
<android.widget.ImageView resource-id="android:id/icon">
<android.widget.LinearLayout>
<android.widget.TextView resource-id="android:id/text1">
が、それは些細なことのように思えるはずですが、私のトラブルを引き起こしている:appiumインスペクタで次のようになります
。 「ブラウザ」と「クロム」の両方のテキストをディスクリートAndroidElement
のように取得できますが、実際のオプションを実際に押すことはできません。
私は実際にこれらのものとやりとりすることができますか、それはアンドロイドシステムそのものの一部であるため不可能ですか?
これを理解するために、私のページオブジェクトの設定を次に示します。
@AndroidFindBy(id = "android:id/resolver_list")
private AndroidElement listParentElement;
public List<OpenWithOption> getOptions() {
/* ... */
List<MobileElement> elements = listParentElement
.findElementsById(SYS_ID_PREFIX + "text1"); // Here's where I can only get the text element itself but can't figure out how to get the elements above that.
return elements.stream()
.map(mobileElement -> new OpenWithOptionImpl(mobileElement.getText(), mobileElement))
.collect(toList());
}