Comment puis-je utiliser l'espresso pour cliquer sur un élément dans une vue de liste en fonction du texte de l'élément?

Panduru Ionut

J'essaye de cliquer sur un élément de vue de liste en utilisant l'espresso mais sans succès.

J'ai essayé tout ce qui est sur stackOverflow

onData(anything()).inAdapterView(withId(R.id.more_menu_list)).atPosition(0).
                    onChildView(withId(R.id.mm_item_text)).
                    check(matches(withText("Log in")))
                    .perform(click());

            onView(allOf(is(instanceOf(MenuListAdapter.class)), hasSibling(withText("Log in")))).perform(click());

            onData(allOf(is(instanceOf(MenuListAdapter.class)), hasEntry(equalTo("STR"), is("Log in"))))
                            .perform(click());

            onData(anything()).inAdapterView(withContentDescription("Log in")).atPosition(0).perform(click());

            onData(hasToString(startsWith("Promotions")))
                    .inAdapterView(withId(R.id.more_menu_list)).atPosition(0)
                    .perform(click());


            onData(hasEntry(equalTo(MenuListAdapter.class),is("Log out")))
                    .onChildView(withId(R.id.more_menu_list));
            onView(withId(R.id.mm_item_text)).check(matches(withText("Log in")));

I also tried to create a custom matcher
    public static Matcher<Object> withItemValue(final String value) {
        return new BoundedMatcher<Object, ExtraMenu>(ExtraMenu.class) {
            @Override
            protected boolean matchesSafely(ExtraMenu item) {
                return item.getText().toUpperCase().equals(String.valueOf(value));

            }

            @Override
            public void describeTo(Description description) {
                description.appendText("has value " + value);
            }
        };
    }

utilisé comme:

onData(withItemValue("Promotions")).inAdapterView(withId(R.id.more_menu_list)).perform(click());

La plupart du temps, j'obtiens cette erreur. Il y a un menu avec 5 éléments Causé par: java.lang.RuntimeException: Aucune donnée trouvée correspondant: a une valeur Les promotions contiennent des valeurs: <[Data: 0 (class: java.lang.Integer) token: 0, Data: 1 (class: java.lang.Integer) token: 1, Data: 2 (class: java.lang.Integer) token: 2, Data: 3 (class: java.lang.Integer) token: 3, Data: 4 (class: java. lang.Integer) jeton: 4]>

Panduru Ionut

J'ai trouvé un moyen, je le posterai pour aider les autres. J'ai dû changer la vue de liste en vue de recyclage et utilisé cette commande.

onView(withId(R.id.list))
                .perform(RecyclerViewActions.actionOnItem(
                        hasDescendant(withText("Your string")), click()));

Vous pouvez utiliser Thread.sleep (2000) si vous avez plusieurs actions avant cette ligne de code. Vous avez également besoin de cette dépendance dans votre build.gradle:

androidTestImplementation("com.android.support.test.espresso:espresso-contrib:2.2.2") {
    exclude group: 'com.android.support', module: 'appcompat'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude group: 'com.android.support', module: 'support-v7'
    exclude group: 'com.android.support', module: 'design'
    exclude module: 'support-annotations'
    exclude module: 'recyclerview-v7'
}

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Exporter la table de l'arborescence vers CSV avec mise en forme

  3. 3

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  4. 4

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  9. 9

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  10. 10

    php ajouter et fusionner des données de deux tables

  11. 11

    Créer un système Buzzer à l'aide de python

  12. 12

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  13. 13

    Comment changer la couleur de la police dans R?

  14. 14

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  15. 15

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    comment afficher un bouton au-dessus d'un autre élément ?

  18. 18

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  19. 19

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  20. 20

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  21. 21

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

chaudétiquette

Archive