0
我有一個簡單的用例。在android應用程序中,按下按鈕,瀏覽器應用程序將打開一個URL。Appium:處理Android系統交互
出現「打開方式」對話框彈出窗口,您可以選擇瀏覽器或Chrome。
看起來像這樣在appium檢查:
<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">
試圖自動完成這個似乎應該是微不足道的,但我造成麻煩。我可以將「瀏覽器」和「Chrome」的文本分別作爲離散的AndroidElement
s,但我似乎無法真正按實際選項。
我被允許實際與這些東西進行交互,或者這是不可能的,因爲它是android系統本身的一部分?
爲了解決這個問題,下面是我的頁面對象的設置。
@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());
}