Ich versuche das Testen einer WinForm-Anwendung zu automatisieren. Ich führe es im selben Prozess wie den Testcode, so dass es ziemlich einfach ist, die .Net-Steuerelemente zu finden und Benutzeraktionen auf ihnen zu simulieren. Ich habe aber ein bisschen mit einer Message Box (erstellt mit der Standard MessageBox.Show-Methode) stecken. Wie kann ich es erreichen und simulieren, dass eine Taste gedrückt wird?Programmatisch finde ich ein Meldungsfeld und erzeuge einen Klick auf eine Schaltfläche
Antwort
Sie werden wahrscheinlich verwenden müssen WinAPI Anrufe (FindWindowEx, ect) und einem schicken Nachrichten von LMB nach unten und bis zu einem Button-Handle.
codeplex.com/white - Free
testautomationfx.com - Gewerbe, aber sehr gut
Wenn Sie die Beschriftung kennen (und sie ist eindeutig), können Sie Application.OpenForms durchlaufen, um sie zu finden.
Und wie finde ich die Tasten? – Grzenio
Eines der besten kostenlosen Tools ist AutoHotKey.
Ich würde empfehlen, die zugrunde liegende Krankheit und nicht das Symptom zu behandeln. Nehmen Sie ein paar Minuten zu lesen, diese
Kurz gesagt, eine Schnittstelle verwenden, um alle modalen Dialog Popups zu trennen - das ist ein Schmerz im Nacken für UI Testautomatisierung. Sie können dann eine Scheinimplementierung der Schnittstelle ersetzen, die nichts tut oder vorgegebene Testwerte zurückgibt. Die eigentliche Implementierung natürlich erscheint den eigentlichen Dialog modal ... so etwas wie dies (aus dem zweiten Link) bis
public class UserInterrogator : IUserInterrogator
{
private Form owner;
public UserInterrogator(Form owner)
{ this.owner = owner; }
public Font GetFontFromUser() // member of the IUserInterrogator interface
{
FontDialog fd = new FontDialog();
fd.ShowDialog(owner);
return fd.Font;
}
}
Je einfacher Ansatz ist natürlich etwas Code zu schreiben, der den Dialog sucht und schließt/sie tötet. Ich habe einige Leute gesehen, die Erfolg mit Win32 APIs und NUnitForms haben ...
Sie können autoit Skript-System verwenden.
Aber ich schlage vor, um die GUI und die Implementierung zu trennen, weil das Grundprinzip des Komponententests "Einheit" ist, wo Einheit Klasse ist, die von anderen Klassen oder der realen Welt getrennt ist.
Dieses Prinzip gibt Ihnen gutes Klassen-Design und hilft, Software-Eruption und viele andere gute Sachen zu vermeiden.
- 1. Jquery und triggern einen Klick auf eine versteckte Schaltfläche
- 2. zeigt und versteckt divs durch einen Klick auf eine Schaltfläche
- 3. Programmatisch deaktivieren Hervorhebung bei Klick auf UIButton
- 4. Schaltfläche erste Aktion auf Klick und zweite Aktion auf Klick
- 5. Ein Klick auf die Schaltfläche tut nichts
- 6. wie programmatisch eine Schaltfläche auszublenden
- 7. Verwenden des Google Places-Suchfelds. Wie starte ich eine Suche durch einen Klick auf eine Schaltfläche?
- 8. Wie programmatisch eine Schaltfläche hinzufügen?
- 9. Programmatisch hinzufügen Schaltfläche auf Android
- 10. Kann ich einen Link in ein Meldungsfeld in Javascript integrieren?
- 11. Klick Zuhörer hinzufügen auf auf die Schaltfläche in Ext.window.MessageBox
- 12. Wie erzeuge ich eine Abbrechen-Schaltfläche in Simple_form?
- 13. Binden Sie einen Klick an eine dynamische Schaltfläche mit jQuery?
- 14. Wie kann ich eine Gridview auf einen Client-Klick einer anderen Gridview-Schaltfläche erneut laden?
- 15. Wie erstelle ich ein Meldungsfeld mit tkinter?
- 16. Wie setze ich ein Bild auf einen Klick in Swing?
- 17. Android: Wie zentriere ich eine programmatisch erstellte Schaltfläche?
- 18. Ein Klick auf eine Schaltfläche Ereignis auslösen Sie auf eine andere
- 19. Wie unterdrückt man ein Meldungsfeld beim Komponententest?
- 20. Erster Klick auf die Schaltfläche ist langsam
- 21. Diagramm als Bild exportieren - mit einem Klick auf eine Schaltfläche
- 22. Kann ich einen Klick innerhalb eines TR-Klick-Ereignisses ausschließen?
- 23. jquery Klick-Filter auf die Schaltfläche Elemente
- 24. JQuery-Schaltfläche auf Klick funktioniert nicht
- 25. jQuery wird nicht funktionieren mit einem Klick auf eine Schaltfläche
- 26. Erkennen zweiten Klick auf die Schaltfläche
- 27. reload Liste Inhalt auf einen Klick
- 28. Opera's Strg-Klick deaktivieren, um ein Bild programmatisch zu speichern?
- 29. Android: langer Klick auf eine Schaltfläche -> Aktionen ausführen
- 30. DelphiWin32 - Erzeuge ein Objekt einer bestimmten Klasse
Generell UI Automation (wie in Sachen, die ich verlinkt habe) ist eine höhere Ebene, dies zu tun, auch wenn das ist gültig [und ich habe auf dieser Basis +1 gegeben]] –
Könnten Sie etwas Code einfügen? Ich habe noch nie mit win api gespielt. – Grzenio