Question

Le cadre UI Automation a une classe de base, AutomationElement , qui a une propriété, ItemStatus , que peut être utilisé pour stocker des chaînes arbitraires. Je suis en train d'obtenir cette propriété de Visual Studio 2010 Codé la classe de base de tests de l'interface utilisateur, UITestControl .

Était-ce utile?

La solution

Regardez les tests de l'interface utilisateur du code généré pour Coded WpfControl. Il a une propriété, NativeElement. Cette propriété est un AutomationElement.

public abstract class WpfControl : UITestControl
{
    ...

    public virtual object NativeElement
    {
        get
        {
            return ((object)(this.GetProperty(UITestControlProperties.Common.NativeElement)));
        }
    }

    ...
}

Vous pouvez écrire une méthode d'extension pour le lancer et obtenir ItemStatus.

public static string GetItemStatus(this WpfControl control)
{
    var automationElement = (AutomationElement)control.NativeElement;
    return automationElement.Current.ItemStatus;
}

Je ne suis pas certain pourquoi NativeElement est enregistré comme object (ce qui rend la distribution getter redondant). Tous les contrôles WPF de la NativeElement sont de type AutomationElement. Je suggère modifier le code généré et simplement appeler directement control.NativeElement.Current.ItemStatus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top