Das UI Automation-Framework hat eine Basisklasse, AutomationElement, die eine Eigenschaft, ItemStatus, hat, die verwendet werden kann, um beliebige Zeichenfolgen zu speichern. Ich versuche, diese Eigenschaft von der Visual Studio 2010 Coded UI Tests-Basisklasse, UITestControl, zu erhalten.
Antwort
Zu viele Anzeigen?Schauen Sie sich den generierten Code der Coded UI Tests für WpfControl
an. Es hat eine Eigenschaft, NativeElement. Diese Eigenschaft ist ein AutomationElement
.
public abstract class WpfControl : UITestControl
{
...
public virtual object NativeElement
{
get
{
return ((object)(this.GetProperty(UITestControlProperties.Common.NativeElement)));
}
}
...
}
Sie können eine Erweiterungsmethode schreiben, um sie zu casten und den ItemStatus zu erhalten.
public static string GetItemStatus(this WpfControl control)
{
var automationElement = (AutomationElement)control.NativeElement;
return automationElement.Current.ItemStatus;
}
Ich bin mir nicht sicher, warum NativeElement als ein object
aufgezeichnet wird (was die Cast-Operation im Getter überflüssig macht). Alle WPF-Steuerelemente haben NativeElement vom Typ AutomationElement
. Ich würde vorschlagen, den generierten Code zu bearbeiten und einfach control.NativeElement.Current.ItemStatus
direkt aufzurufen.