Vérifier si une boîte de dialogue s'affiche avec Espresso
Je suis en train d'écrire quelques tests avec la nouvelle android-test-kit (à Expresso). Mais je ne peux pas trouver toutes les informations sur comment vérifier si une boîte de dialogue s'affiche et effectuer certaines actions (par exemple en cliquant sur le positif et le négatif des boutons, des e.t.c.). Notez qu'une boîte de dialogue peut également être affiché par un WebView
, non pas par l'application elle-même.
Toute aide serait appréciée. J'ai juste besoin d'un lien, ou un exemple de code pour les fonctions de base:
- Vérifier si une boîte de dialogue s'affiche
- Effectuer les clics sur les boutons du dialogue
- Interagir avec la boîte de dialogue du point de vue interne (si c'est une vue personnalisée)
- Préforme clique en dehors de la boîte de dialogue, et de vérifier si c'est l'affichage ou non (par exemple, si
setCancelable(false)
a été appelée sur la boîte de dialogue générateur et nous voulons vérifier qu')
Merci des conseils!
- Tous les commentaires sur ma réponse ci-dessous??
Vous devez vous connecter pour publier un commentaire.
Pour vérifier si une boîte de dialogue apparaît, vous pouvez simplement vérifier si la Vue avec un texte qui présente à l'intérieur de la boîte de dialogue apparaît:
ou, basé sur le texte avec l'id
De cliquer sur les boîtes de dialogue bouton de le faire (button1 - OK, bouton2 - Annuler):
Mise à JOUR
J'utilise actuellement et cela semble bien fonctionner.
Si vous avez un AlertDialog comme ça:
Vous pouvez vérifier si les composants sont affichés:
et effectuer une action:
android.R.id.message
, et le titre a caché id deandroid.R.id.alertTitle
.int alertDialogTitleId = android.support.v7.appcompat.R.id.alertTitle;
Juste au cas où quelqu'un bute sur cette question, comme je l'ai fait. Toutes les réponses ne fonctionnera que pour les dialogues AVEC les boutons du dialogue. N'essayez pas de l'utiliser pour de progression sans interaction de l'utilisateur. Espresso continue d'attendre l'application pour entrer dans un état d'inactivité. Aussi longtemps que la boîte de dialogue de progression est visible de l'application n'est pas inactif.
Pour répondre à la question 4, qui l'a accepté la réponse n'est pas, j'ai modifié le code suivant, que j'ai trouvé ici, sur un Débordement de Pile (lien) pour tester si un Toast a été affichée.
La
id
transmis est l'id d'unView
actuellement affichée dans votre boîte de dialogue. Vous pouvez également écrire la méthode comme suit:Et c'est maintenant à la recherche d'un
View
contenant une chaîne de texte particulier.L'utiliser comme ceci:
Le bouton Id R. id.button1 et R. id.bouton2 ne vont pas être les mêmes à travers les dispositifs. L'Ids peuvent changer avec les versions d'OS.
La bonne façon d'y parvenir est d'utiliser UIAutomator.
Inclure UIAutomator dépendance dans votre construction.gradle
et l'utilisation
android.R.id.button1
,android.R.id.button2
etandroid.R.id.button3
pour "positif", "neutre" et "négatif", sont les symboles globaux que peut être utilisée. Si vous choisissez de sélectionner des boutons par l'intermédiaire de leur texte - ce qui est tout à fait bien - vous n'avez pas besoin UIAutomator, mais peut faire de même avec l'Expresso duonView(withText("ButtonTest")).perform(click())
.