Skip to main content

UI Automation Framework: développer des applications accessibles

PIC_0212 Philippe Beraud, Consultant Architecte chez Microsoft France et Julien Chable de Wygwam.

L'accessibilité est bien comprise dans le Web, aujourd'hui, mais la question se pose pour les applications RIA/Web 2.0 et les clients lourds/RDA. La question est notamment posée aujourd'hui par les grandes entreprises.

Définition: les dispositifs d'assistance permettent à une personne d'utiliser une personne malgré une gène. Par exemple, pour une personne non voyante l'ordinateur portable est un outil indispensable de communication avec le monde, et elle peut utiliser un clavier braille dynamique et/ou un logiciel de lecture à l'écran.

Concrètement, une application a besoin de s'exposer aux dispositifs d'assistance afin que le dispositif puisse communiquer et naviguer avec la machine. C'est une médiation à double sens: donner connaissance à l'utilisateur de l'application, mais aussi permettre à l'utilisateur d'agir sur l'application.

Historique des technologies:

PIC_0213

User Interface Automation (UI Automation), arrivé avec .NET 3.0, a permis de décrire les applications de manière plus uniforme et complète, par exemple en prenant en charge les apparitions/disparitions d'éléments.

UI Automation ne se limite pas à l'accessibilité. Il permet aussi d'automatiser l'interface, par exemple pour conduire des tests d'interface automatisés.

Avec UI Automation, un développeur WPF ou Silverlight va pouvoir simplement donner des informations sur ce à quoi servent les contrôles. Il n'y a plus besoin de prendre de framework d'un éditeur tiers pour cela, ce qui permet des réductions de coûts d'apprentissage.

UI Automation permet de

  • collecter des informatios sur l'IHM;
  • naviguer entre et intéragir avec les éléments de l'IHM;
  • être notifié des changements d'IHM.

Il ne permet pas de déplacer la souris et simuler la frappe sur le clavier, il va directement récupérer les contrôles pour leur passer des valeurs et réagir à leurs événements. Il ne s'applique bien entendu pas aux éléments non graphiques (Timers, ...).

Concepts d'UI Automation:

  • arbre d'automatisation: arbre partant du bureau Windows et allant en profondeur jusque dans les applications;
  • vues de l'arbre: permet de filtrer l'arbre, par exemple juste sur un certain type de contrôles;
  • élément d'automatisation: l'atome, c'est le cas de tous les éléments d'IHM;
  • sur chaque élémnt, il y a des propriétés, par exemple son rectangle d'occupation (permettant notamment de récupérer un contrôle par sa position);
  • modèles de contrôles: donnent les capacités comportementales d'un élément, c'est un concept très important;
  • événements: permet aux contrôles de notifier d'une action/changement.

Pour obtenir un élément AutomationElement, on peut le faire par:

  • coordonnées;
  • focus;
  • handle HWND;
  • parcours de l'IHM (arbre).

Les 3 propriétés essentielles:

  • AutomationIdProperty: identifiant unique au sein de l'application;
  • ControlTypeProperty: type primaire de contrôle;
  • NameProperty: utilisée notamment pour la localisation (traduction).

Démo: UI Spy est un outil du SDK Windows qui permet de voir l'arbre des contrôles. On peut filtrer l'arbre par des conditions sur les propriétés.

Les fournisseurs doivent référencer l'assembly UIAutomationProvider et implémenter les interfaces UI.Automation.Provider

Côté client, on utilise les Patterns correspondant aux Providers.

Démo: en WPF, dans le fournisseur, on ajoute des propriétés AutomationProperties (exemple: <TextBox AutomationProperties.Name=''NomUtilisateur"/>. Côté client, on récupère l'élément AutomationElement et l'on peut agir dessus. Comble du bonheur, en Silverlight 2 ça fonctionne et c'est la même chose que les applications WPF. C'est un avantage sur Flash, car avec Flash on ne voit que l'application Flash et on ne peut pas creuser dedans pour voir ses contrôles.

Comments

Popular posts from this blog

Vue semaine gratuite pour Windows Phone 7.5

J’ai le plaisir d’annoncer la disponibilité sur le marketplace de mon application Free Week Calendar . C’est la première application gratuite à vous fournir une vue semaine de vos rendez-vous. L’utilisation est aussi simple que fluide. Par défaut vos rendez-vous de la semaine courante sont affichés (les copies d’écran sont en anglais mais l’application est intégralement localisée en français): En glissant le doigt à gauche ou à droite vous obtenez la semaine suivante ou précédente. En écartant les doigts vous zoomez sur vos rendez-vous, et en les rapprochant vous revenez à la vue globale. Contrairement à d’autres applications, celle-ci est entièrement localisée pour fonctionner en français et respecter le lundi comme premier jour de la semaine. P.S: merci à l’ Accélérateur Windows Phone et Dalhia pour leur aide. Sans eux cette application aurait mis plus de temps à sortir.

Tutoriel: Insérer un flux RSS dans une page ASP.net

Nous allons ici voir comment rapidement incorporer un flux RSS dans un formulaire Web ASP.net. Plus exactement, nous allons nous abonner à un flux Atom. Le but est d'afficher en tant que HTML les titres des entrées du flux, avec les liens vers les articles, et d'incorporer le tout au formulaire Web, comme je le fais sur ma page: Dans cet exemple, nous prendrons le flux RSS provenant de l'URL http://arnaudweil.blogspot.com/rss.xml . Puisque le RSS est du XML , nous allons facilement pouvoir le transformer en HTML grâce au contrôle ASP.net Xml et à une transformation XSLT . Dans ma page blog.aspx, j'écris donc: <asp:Xml ID="Xml1" runat="server" TransformSource="~/rss2table.xsl" /> Il me faut ensuite créer la transormation XSLT. J'ajoute donc à la racine de mon site un fichier rss2table.xsl avec le contenu suivant (cliquez avec le bouton droit sur le nom du projet dans l'Explorateur de Solutions de Visual Studio et ch...

Gift idea : help your loved ones take their IT skills to the next level

You surely know a special person who works in IT. Learn Kubernetes & Docker enables them to quickly ramp up on those two technologies that one doesn't want to miss in 2021. With smoother operations, better scaling and availability, DevOps tooling, containers and containers orchestration smartly solve many problems that developers and system administrators commonly face. Don't let your loved ones face problems in their IT job : offer them the book that takes them from zero to productive in a matter of days. Grab it now! Get the ebook from Leanpub , Amazon or choose from many retailers . Get the print edition from Lulu .