2017-10-09 59 views
0

我有一個簡單的用例。在android應用程序中,按下按鈕,瀏覽器應用程序將打開一個URL。Appium:處理Android系統交互

出現「打開方式」對話框彈出窗口,您可以選擇瀏覽器或Chrome。

Android Popup: Open with

看起來像這樣在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()); 
} 

回答

0

這是一個菜鳥的錯誤。選擇瀏覽器可以在屏幕底部選擇「一次」或「總是」,我沒有注意到。我認爲只要按下你想要的瀏覽器就可以啓動它。

enter image description here