J'essaie actuellement d'automatiser une application Windows Forms en utilisant Microsoft UI Automation Library et C#, mais j'ai de gros problèmes concernant les performances. L'identification des éléments individuels en utilisant un PropertyCondition
ou une itération sur tous les éléments d'une fenêtre prend très longtemps (jusqu'à 4 minutes). Dès que j'ai un AutomationElement
, tout va bien (par exemple GetCurrentPropertyValue
réagit dans les 100ms).Mauvaises performances de Microsoft UI Automation Library
La mauvaise performance s'applique uniquement à une application. Je n'ai pas accès à la source mais si quelque chose doit être changé ou vérifié, je peux parler au programmeur responsable. Pour autant que je sache, certains événements (par exemple peinture) ont été écrasés pour l'application. Une fenêtre typique de l'application contient environ ~ 100 éléments qui sont trouvés par la méthode FindAll
.
J'ai également essayé l'interface COM de la bibliothèque d'automatisation de l'interface utilisateur, qui est environ deux fois plus rapide, mais cela ne résout pas vraiment le problème.
Quelqu'un a-t-il une idée pour résoudre ce problème ou a-t-il eu un comportement similaire?
Donc, si vous le comprenez correctement, les mauvaises performances étaient essentiellement liées à une application mal écrite sous test, et non au cadre d'automatisation de l'interface utilisateur lui-même? – tomalone
Est-ce le code Thread.Sleep sur l'interface utilisateur qui utilise l'automatisation? Ou l'application qui effectue l'automatisation? Par ailleurs, quelles sont les chances qu'un post SO de 4 ans reçoive ses 2 premiers commentaires dans les 2 jours les uns des autres? –
@Tobias: Celui qui a écrit ce code avec Thread.Sleep était complètement idiot. Malheureusement, votre réponse n'aide pas tous les autres qui observent que UI Automation est extrêmement lent. Même sans ce type d'erreur de programmation stupide dans l'application automatisée, vous trouverez que l'UIA est un gros tas de merde. Il y a beaucoup de bugs, beaucoup de fonctionnalités manquent, ce n'est pas thread-safe et c'est extrêmement lent. – Elmue