2017-01-13 1 views
0

Versuchen, wie ich könnte ..Pywinauto, kein Text in TtsGridEditBox (Delphi XE2 GUI erstellt App getestet wird)

Ich kann nicht den angezeigten Text mit pywinauto von einem im Haus Applikationswerkzeug (Eurotherm iTools) erhalten, geschrieben mit Delphi. Ich habe eine große Menge Python-Testcode (infrustructure) mit pywinauto geschrieben. Ich habe die x, y-Elemente des Browsers mit einer Textdatei für die erweiterten und eingerückten Strukturkoordinaten gezeichnet, da sich im Rahmen des Browsers kein 'TUivOPCTreeView'-Frame befindet.

Ich schaffte es, TtsGridEditBox über DoubleClickInput auszuwählen und markieren Sie es mit DrawOutline(). Alle Bemühungen .UserData(), .Texts(), .WindowText(), Looping durch Kinder filtern Lamda und eine Vielzahl von Absturz-Befehle geben den Text von ''. Ich denke, meine einzige Option ist es, den Text so zu kopieren, wie es scheint, dass er nicht gelesen werden kann.

Ich konnte (.TypeKeys("{HOME}{DELETE}{DELETE}{DELETE}{DELETE}{DELETE}") löschen und einen anderen Wert eingeben (.TypeKeys(' + var + '"{ENTER}")).

Gibt es eine Möglichkeit zu geben: zu Hause, wählen, enden, kopieren mit .TypeKeys oder irgendetwas anderes?

Control Identifiers: 
TtsGridEditBox - '' (L680, T498, R776, B512) 
     '49' 'TtsGridEditBox'() 
Read WindowText from valueNum20 is {u'UserData': 0, u'Style': 1409286144, u'ControlCount': 
0, u'ClientRects': [<RECT L0, T0, R96, B14>], u'IsEnabled': True, u'Fonts': [<LOGFONTW 'M 
S Shell Dlg' -11>], u'FriendlyClassName': u'TtsGridEditBox', u'IsUnicode': True, u'Texts': 
[''], u'ContextHelpID': 0, u'ExStyle': 0, u'IsVisible': True, u'ControlID': 2100226, u'Me 
nuItems': [], u'Class': u'TtsGridEditBox', u'Rectangle': <RECT L680, T498, R776, B512>} 

Die GUI ist in Delphi XE2 geschrieben (2012) v16.0.4504.48754 mit Plugins TeeChart 2012 VirtualTreeViewV5.1.3 und TopGrid 2_20.

Wurde pywinauto jemals auf nicht win32 geschriebenen Anwendungen wie Delphi ausgeführt? Klingelt das mit irgendjemandem?

Ich bin davon überzeugt, dass die Delphi geschrieben GUI-Anzeigen aber den Text für automatisierte Tools seltsam maskiert.

Much, frustriert, danke im voraus :)

+0

Delphi VCL ist Win32. Lesen von Steuerelementen sollte Routine sein. Welche Klasse ist die Kontrolle? –

+0

TCustomTreeView ist die Klasse, von der TUivOPCTreeView abgeleitet ist. Es gibt Massen von ihnen. Ich benutze AutoIt Window Info-Tool, das mir Klasse und Coords gibt. Könnte es "Klasse CVersadacSecurityManagerDlg: public CDialogEx" sein, die Text maskiert? – Ellio

+0

Wenn Sie diese Software im Haus geschrieben haben, wissen Sie sicher, was es ist. Ich bin sicher, ich kann es nicht erraten. –

Antwort

0

Könnte an implementation of UI Automation patterns for some Delphi controls einschließlich String finden.

This parent project "DelphiUIAutomation" kann Ihnen helfen, pywinauto mit diesen erweiterten Steuerelementen zu verwenden. Oder Sie wählen Delphi selbst für Ihren Testcode.

+0

Ich gab auf und verließ das Unternehmen. Sie waren nicht an der Automatisierung ihrer App interessiert und baten mich, alles manuell zu testen. Ich war überzeugt, dass sie eine Klasse für die Sicherheitsmaskierung verwendeten. Delphi ist sowieso böse! – Ellio

+0

OK, lassen Sie mich in Zukunft mehr testbare/automatisierbare Produkte wünschen. :) –