J'ai un cas d'utilisation simple. Dans l'application Android, appuyez sur un bouton et l'application du navigateur va ouvrir une URL.Appium: traitant des interactions du système Android
La boîte de dialogue "Ouvrir avec" apparaît et vous permet de sélectionner Navigateur ou Chrome.
qui ressemble à ceci dans l'inspecteur de 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">
Toute tentative d'automatiser cela semble comme il devrait être trivial, mais me causer des ennuis. Je peux obtenir le texte de "Browser" et "Chrome" comme discret AndroidElement
s, mais je ne peux pas sembler être en mesure d'appuyer sur les options réelles.
Suis-je autorisé à interagir réellement avec ces choses ou est-ce impossible parce que cela fait partie du système android lui-même?
Pour vous aider à comprendre cela, voici la configuration de mon objet page.
@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());
}