2 Stimmen

Wie erhält man alle AutomationIDs einer WPF-Anwendung in einer Datei?

Bei der Automatisierung einer WPF-Anwendung (mit UI-Automatisierung; VSTS 2010) haben wir alle Automatisierungs-IDs manuell in einer Ressourcendatei hinzugefügt und dann nacheinander darauf zugegriffen. Wenn man bedenkt, dass die Anwendung jederzeit erweitert werden kann, kann das manuelle Hinzufügen dieser IDs mühsam werden.

Gibt es ein Tool, das dies für uns erstellen kann? d.h. alle IDs in einem hierarchischen Format abrufen und in einer Datei (xml oder csv) speichern, und dann könnten wir sie bei Bedarf analysieren.

Ich hatte auf ein Tool wie UISpy gehofft, das nicht nur alle Elemente ausspähen, sondern auch exportieren kann.

Gibt es solche Instrumente? Oder gibt es einen alternativen Ansatz?

Jede wertvolle Rückmeldung ist sehr willkommen.

Danke!

1voto

Johan Larsson Punkte 16314

Das gefällt mir:

public static class AutomationIds
{
    public static readonly string MyDataGridId= Create();

    private static string Create([CallerMemberName] string name = null)
    {
        return name;
    }
}

<DataGrid AutomationProperties.AutomationId="{x:Static local:AutomationIds.MyDataGridId}"
          ... />

Dann in Tests

var dataGrid = window.Get<ListView>(AutomationIds.MyDataGridId);

0voto

m0sa Punkte 10302

Weisen Sie die Automatisierungs-IDs direkt in XAML zu und analysieren Sie dann die XAML-Dateien, da es sich schließlich um XML handelt...

0voto

AlbusMPiroglu Punkte 600

Schauen wir mal... Erstens denke ich, dass Ihre Daten nicht hierarchisch sind - nur weil ein Steuerelement dynamisch zugewiesen werden kann, um ein Kind eines anderen zu sein.

Wenn wir das Problem auf eine Teilmenge ändern: "Wie können wir eine hierarchische Ansicht der Steuerelemente zu einem Zeitpunkt t erhalten?", dann können wir dies mit MS UIA beantworten, z. B. mit einem einfachen RawViewWalker (eine einfache Breadth-First-Suche auf dem Walker, ausgehend von Ihrem Hauptfenster, reicht aus - natürlich während die Anwendung läuft, damit UIA sie erreichen und abfragen kann).

Aber diese Teilmenge wird Ihre ursprüngliche Frage nicht befriedigen, weil Sie wahrscheinlich einen Teil Ihrer gesamten UI-Sammlung sehen werden (da einige zum Zeitpunkt t ausgeblendet / noch nicht aktiviert sein werden).

So wird es sehr schwierig, ein UIA-basiertes Tool (wie z.B. uispy) zu verwenden, weil Sie dann die Anwendungsansicht auf verschiedene Zustände einstellen müssen, um alle Steuerelemente in Ihrer Anwendung zu verschiedenen Zeiten t1, t2... zu erreichen.

Ich würde vorschlagen, alle xmls gleichzeitig zu analysieren und einen vollständigen Baum der "statischen" Kontrollkarte der Anwendung zu erstellen, was meiner Meinung nach dem am nächsten kommt, wonach Sie fragen.

Da dies eine alte Frage ist, glaube ich nicht, dass sie noch von Bedeutung ist, aber ich wollte hier nur die Unterschiede deutlich machen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X