11
votes

Cliquer sur le clavier 'Suivant' Key à l'aide de l'uautéomation

J'ai un champ de recherche dans mon application et j'ai défini le type de clé de retour du clavier pour ce champ sur UIRETURNKEYNEXT . Je tente d'écrire un test uautomation qui clique sur le bouton suivant du clavier à l'aide de la ligne suivante: xxx

Cet appel échoue car la touche avec nom "Suivant 'n'est pas trouvé. J'ai fait une vidage de tous les éléments de mon application à l'aide de: xxx

ceci révèle qu'il y a en effet une clé dans le clavier avec le nom "Suivant", mais mon tenter de le récupérer comme indiqué ci-dessus échoue encore. Je peux toutefois récupérer d'autres clés (comme la clé de la lettre 'U') à l'aide de cette méthode. Y a-t-il un problème connu ici ou je fais quelque chose de mal?

J'ai essayé d'autres variations sans chance: xxx

voici une capture d'écran des éléments de mon uiakeyboard:

retour de clé de retour


0 commentaires

5 Réponses :


2
votes

Je n'ai pas d'exemple à tester, mais comme le bouton "Suivant" est un uabutton, et non un uiakey, vous pouvez essayer: xxx

si cela ne fonctionne pas, Vous pouvez également essayer xxx


2 commentaires

J'ai essayé les deux et n'avait pas de chance. Merci pour les suggestions cependant.


Julien, votre réponse m'a invité à jouer à nouveau avec cela et à utiliser la fonction Boutons () a conduit à une solution de travail. Voici ce qui fonctionne pour moi: uiatarget.localtarget (). FRONTHIPLOP (). MainWindow (). Clavier () .buttons (). Firstwi thprédicate ("nom contient [C]" suivant ""); Il me semble que ces boutons () ["Suivant"] auraient dû travailler et je ne sais pas pourquoi ce n'est pas le cas, mais ce qui précède fonctionne. Merci pour la suggestion.



1
votes

Les œuvres suivantes pour moi:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons().firstWi‌​thPredicate("name contains[c] 'next'"); 


0 commentaires

6
votes

Si vous voulez simplement cliquer dessus et que vous savez que le clavier a "Next" comme "Touche de retour" (défini dans votre NIB), vous pouvez utiliser ceci:

app.keyboard().typeString("\n");


0 commentaires

0
votes

Pour moi, le clavier ne tombe pas sous MainWindow () dans la hiérarchie de vue. Il est au même niveau que MAINWINDOW () lorsque vous logelementalTree () du haut niveau. Donc, ce que vous voulez faire est de:

UIATarget.localTarget().frontMostApp().keyboard().buttons()["next"];


0 commentaires

7
votes

L'approche de Jelle a travaillé pour moi. Mais j'ai aussi trouvé une solution alternative si quelqu'un en avait besoin. XXX

où vous pouvez créer XCuiapplication () en tant que singleton sur chaque session de test d'interface utilisateur. La chose à propos de cette approche est que vous pouvez désormais distinguer entre retour et effectué et d'autres variantes et même vérifier leur existence.

Vous pouvez aller supplémentaire et Faites quelque chose comme suit: xxx

et vous pouvez l'utiliser comme: xxx


0 commentaires