2017-09-26 1 views
0

J'utilise une application WPF qui a un panneau de pile personnalisé, qui est essentiellement une liste. L'élément de la liste est exactement le même, donc je ne suis pas en mesure de sélectionner un texte spécifique pour identifier les éléments de façon unique. Et d'autres valeurs telles que le temps sont dynamiques.Pywinauto comment puis-je obtenir la liste des éléments retournés

Y a-t-il un moyen pour moi d'obtenir la liste des éléments retournés. Je sais que c'est possible parce que l'erreur a été levée, ElementAmbiguousError indique le nombre.

Si je pouvais faire cela, alors à partir de cette liste, je peux utiliser l'index et valider ce dont j'ai besoin.

Répondre

0

Vous pouvez ajouter found_index=0 ou un autre index à l'objet de spécification de fenêtre. C'est la première façon de désambiguïser la recherche.

Il y a aussi des méthodes .children() et .descendants() avec params supplémentaires comme control_type ou title (comme je me souviens title devrait travailler), mais certains params de spécification de fenêtre ne sont pas pris en charge dans ces méthodes.

+0

Merci pour votre réponse Vasily. J'ai essayé votre solution, mais en raison de la façon dont la liste est créée, je ne peux pas obtenir le poste des enfants juste pour la vue de la liste. Les éléments de la vue liste sont eux-mêmes des enfants de la fenêtre principale de l'application. – user8678153

+0

Ce serait très utile si je pouvais obtenir le nombre d'éléments trouvés quand je fais quelque chose comme dlg.child_window (auto_id = "list_item_name"). Cela renvoie l'erreur ambiguë et indique le nombre d'éléments trouvés. Si je pouvais accéder à ce compte, alors il m'est facile d'utiliser la propriété found_index pour faire une recherche dans la liste – user8678153

+0

Pour énumérer tous les enfants, utilisez la méthode 'dlg.children (control_type =" ListItem ")' ou 'descendants' (elle liste l'ensemble sous-arbre comme une liste simple). –