J'utilise White pour piloter l'interface utilisateur d'une application WPF, et cela a bien fonctionné jusqu'à présent. Je suis au point cependant, où j'ai besoin de piquer dans l'état interne de l'application testée pour vérifier certaines conditions. En particulier, j'ai un DataGrid (du WPFToolkit), qui est databound à un List<MyBusinessObject>
. Chaque ligne a donc DataContext
d'un MyBusinessObject
Comment puis-je obtenir DataContext d'un contrôle à partir d'une application externe utilisant UI Automation (et/ou Blanc)
Je peux obtenir la grille en utilisant le blanc en le trouvant avec son ID d'automatisation.
Je peux alors faire ceci:
var row = Grid.Rows[0]
row.AutomationElement.Current.Name
qui retourne la chaîne "MyCompany.Namespace.MyBusinessObject"
, donc je suis presque là-bas, mais je ne peux pas vraiment l'objet d'affaires réel lui-même.
Je l'ai regardé dans WPF UIAutomation AutomationPeers (à partir d'un AutomationPeer
, vous pouvez obtenir la propriété Owner
, qui est l'objet d'affaires réel), mais il semble que vous devez être en cours d'utiliser ceux-ci, comme tous avoir des constructeurs qui nécessitent de fournir le contrôle WPF.
Y a-t-il un moyen de construire un AutomationPeer à partir d'un processus externe, ou d'effectuer un zoom avant sur le DataContext
réel d'un contrôle WPF?