Hinweise zur Verwendung von Pywinauto
c:\ python
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> from pywinauto import Desktop, Application
>>>
>>> #Starten Sie Notepad
>>> app = Application().start('notepad.exe')
Wählen Sie im Menü unter "Hilfe" die Option "Versionsinformationen", um den Bildschirm mit den Versionsinformationen anzuzeigen.
>>> #Hilfe->Versionsinformationen anzeigen
>>> app[u"Notizblock ohne Titel"].menu_select(u"Hilfe->Versionsinformation")
>>> print ( app[u"Informationen zur Notepad-Version"].exists() )
True
>>>
>>> window = app.top_window()
>>> window.print_control_identifiers()
Control Identifiers:
Dialog - 'Informationen zur Notepad-Version' (L690, T232, R1240, B711)
['Informationen zur Notepad-Version', 'Dialog', 'Informationen zur Notepad-VersionDialog']
child_window(title="Informationen zur Notepad-Version", class_name="#32770")
|
| Static - '' (L716, T348, R1213, B350)
| ['Informationen zur Notepad-Version Statisch', 'Static', 'Informationen zur Notepad-Version Statisch0', 'Informationen zur Notepad-Version Statisch1', 'Static0', 'Static1']
| child_window(class_name="Static")
|
| Static - '' (L710, T367, R747, B405)
| ['Informationen zur Notepad-Version Static2', 'Static2']
| child_window(class_name="Static")
|
| Static - 'Microsoft Windows' (L759, T367, R1162, B386)
| ['Static3', 'Microsoft WindowsStatic', 'Microsoft Windows']
| child_window(title="Microsoft Windows", class_name="Static")
|
| Static - 'Version 1809(Betriebssystem Build 17763.1397)' (L759, T386, R1223, B405)
| ['Version 1809(Betriebssystem Build 17763.1397)', 'Static4', 'Version 1809(Betriebssystem Build 17763.1397)Static']
| child_window(title="Version 1809(Betriebssystem Build 17763.1397)", class_name="Static")
|
| Static - '© 2018 Microsoft Corporation. All rights reserved.' (L759, T404, R1179, B423)
| ['© 2018 Microsoft Corporation. All rights reserved.Static', '© 2018 Microsoft Corporation. All rights reserved.', 'Static5', '© 2018 Microsoft Corporation. All rights reserved.Static0', '© 2018 Microsoft Corporation. All rights reserved.Static1']
| child_window(title="© 2018 Microsoft Corporation. All rights reserved.", class_name="Static")
|
| Static - '' (L759, T423, R1179, B442)
| ['© 2018 Microsoft Corporation. All rights reserved.Static2', 'Static6']
| child_window(class_name="Static")
|
| Static - 'Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum.' (L759, T442, R1179, B517)
| ['Static7', 'Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum.', 'Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum. Statisch', 'Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum. Statisch0', 'Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum. Statisch1']
| child_window(title="Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum.", class_name="Static")
|
| Static - '' (L759, T517, R1127, B555)
| ['Static8', 'Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum. Static2']
| child_window(class_name="Static")
|
| SysLink - 'Dieses Produkt ist<A>Microsoft Software-Lizenzbedingungen</A>Es ist an folgende Personen lizenziert, basierend auf den Bedingungen von.' (L759, T554, R1127, B592)
| ['Dieses Produkt ist<A>Microsoft Software-Lizenzbedingungen</A>Es ist an folgende Personen lizenziert, basierend auf den Bedingungen von.', 'Dieses Produkt ist<A>Microsoft Software-Lizenzbedingungen</A>Es ist an folgende Personen lizenziert, basierend auf den Bedingungen von.SysLink', 'SysLink']
| child_window(title="Dieses Produkt ist<A>Microsoft Software-Lizenzbedingungen</A>Es ist an folgende Personen lizenziert, basierend auf den Bedingungen von.", class_name="SysLink")
|
| Static - 'Windows-Benutzer' (L777, T592, R1145, B611)
| ['Windows-Benutzer Statisch', 'Static9', 'Windows-Benutzer', 'Windows-Benutzer Statisch0', 'Windows-Benutzer Statisch1']
| child_window(title="Windows-Benutzer", class_name="Static")
|
| Static - '' (L777, T611, R1145, B630)
| ['Windows-Benutzer Static2', 'Static10']
| child_window(class_name="Static")
|
| Button - 'OK' (L1136, T665, R1224, B691)
| ['OKButton', 'OK', 'Button']
| child_window(title="OK", class_name="Button")
>>>
Drücken Sie die OK-Taste, um den Versionsinformationsbildschirm zu schließen
>>> app[u"Informationen zur Notepad-Version"].OK.close_click()
<win32_controls.ButtonWrapper - '', Button, 462076>
>>>
>>> app[u"Notizblock ohne Titel"].dump_tree()
Control Identifiers:
Notepad - 'Ohne Titel-Notizblock' (L673, T177, R1770, B798)
['Ohne Titel-Notizblock', 'Notepad', 'Ohne Titel-NotizblockNotepad']
child_window(title="Ohne Titel-Notizblock", class_name="Notepad")
|
| Edit - '' (L681, T228, R1762, B766)
| ['Edit', 'Ohne Titel-Editor bearbeiten']
| child_window(class_name="Edit")
|
| StatusBar - '' (L681, T766, R1762, B790)
| ['Ohne Titel-Editor StatusBar', 'StatusBar Windows (CRLF)', 'StatusBar100%', 'StatusBar', 'Statusleiste 1 Zeile, 1 Spalte']
| child_window(class_name="msctls_statusbar32")
>>>
Bearbeitungssteuerung gefunden
Schreiben Sie Hallo Welt!
>>> app[u"Notizblock ohne Titel"].Edit.set_edit_text(u"Hello World!")
<win32_controls.EditWrapper - 'Hello World!', Edit, 3672052>
>>>
>>> app[u"Notizblock ohne Titel"].Edit.type_keys("{ENTER}")
<win32_controls.EditWrapper - 'Hello World!
', Edit, 3672052>
>>>
>>> app[u"Notizblock ohne Titel"].menu_select(u"Datei->speichern als")
>>>
>>> #Geben Sie das Dialogfeld Speichern unter an
>>> dialog = app[u"speichern als"]
>>>
>>> #Legen Sie den Dateinamen fest
>>> dialog.Edit.set_edit_text(u"Prüfung")
<win32_controls.EditWrapper - 'Prüfung', Edit, 593534>
>>>
>>> #Drücken Sie die Speichertaste
>>> dialog[u"sparen"].click()
>>>
Da sich der Dateiname geändert hat, hat sich auch die Titelleiste geändert
Drücken Sie Alt + F4, um den Editor zu schließen Alt-Taste ist "%"
Da sich die Titelleiste geändert hat, ändern Sie die Bezeichnung von "Notizblock ohne Titel".
>>> app[u"Notizblock testen"].type_keys("%{F4}") # Alt + F4
<hwndwrapper.DialogWrapper - '', Notepad, 4261490>
>>>
>>> from pywinauto import Desktop
>>> top_windows = Desktop().windows()
>>> for w in top_windows:
... print (w.window_text())
...
>>> from pywinauto import Desktop, Application
>>> app = Application().connect(path='notepad.exe')
>>>
>>> print ( app[u"Notizblock testen"].Edit.window_text() )
Hello World!
>>>
>>> print ( app[u"Notizblock testen"].Edit.texts() )
['Hello World!\r\n', 'Hello World!', '']
>>> print ( app[u"Notizblock testen"].Edit.text_block() )
Hello World!
>>>
>>> print ( app[u"Notizblock testen"].Edit.line_count() )
2
>>> print ( app[u"Notizblock testen"].Edit.get_line(0) )
Hello World!
>>> print ( app[u"Notizblock testen"].Edit.get_line(1) )
>>>
>>> app[u"Notizblock testen"].menu_select(u"Hilfe->Versionsinformation")
>>> for c in app[u"Informationen zur Notepad-Version"].children(class_name='Static') :
... print ( c.window_text() )
...
Microsoft Windows
Version 1809(Betriebssystem Build 17763.1397)
© 2018 Microsoft Corporation. All rights reserved.
Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum.
Windows-Benutzer
>>>
>>> for c in app[u"Informationen zur Notepad-Version"].children() :
... print ( c.get_properties() )
...
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': [''], 'control_id': 13095, 'rectangle': <RECT L618, T474, R1115, B476>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342177296, 'exstyle': 131076, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'MS UI Gothic' -12>], 'client_rects': [<RECT L0, T0, R495, B0>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': [''], 'control_id': 12297, 'rectangle': <RECT L612, T493, R649, B531>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342177347, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'MS UI Gothic' -12>], 'client_rects': [<RECT L0, T0, R37, B38>], 'is_unicode': True, 'menu_items': [], 'automation_id': '', 'image': <PIL.Image.Image image mode=RGB size=37x38 at 0x1B6F8DFBAF0>}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': ['Microsoft Windows'], 'control_id': 13568, 'rectangle': <RECT L661, T493, R1064, B512>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342177420, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R403, B19>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': ['Version 1809(Betriebssystem Build 17763.1397)'], 'control_id': 13579, 'rectangle': <RECT L661, T512, R1125, B531>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342177420, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R464, B19>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': ['© 2018 Microsoft Corporation. All rights reserved.'], 'control_id': 13578, 'rectangle': <RECT L661, T530, R1081, B549>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342177408, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R420, B19>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': [''], 'control_id': 51715, 'rectangle': <RECT L661, T549, R1081, B568>, 'is_visible': False, 'is_enabled': True, 'control_count': 0, 'style': 1073741952, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R420, B19>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': ['Windows 10 Enterprise-Betriebssystem und Benutzeroberfläche in den USA und anderen Ländern/Geschützt durch lokale Marken und andere Rechte an geistigem Eigentum.'], 'control_id': 13587, 'rectangle': <RECT L661, T568, R1081, B643>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342177408, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R420, B75>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': [''], 'control_id': 13581, 'rectangle': <RECT L661, T643, R1029, B681>, 'is_visible': False, 'is_enabled': True, 'control_count': 0, 'style': 1073741952, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R368, B38>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'SysLink', 'friendly_class_name': 'SysLink', 'texts': ['Dieses Produkt ist<A>Microsoft Software-Lizenzbedingungen</A>Es ist an folgende Personen lizenziert, basierend auf den Bedingungen von.'], 'control_id': 13586, 'rectangle': <RECT L661, T680, R1029, B718>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342242816, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R368, B38>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': ['Windows-Benutzer'], 'control_id': 13575, 'rectangle': <RECT L679, T718, R1047, B737>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342177408, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R368, B19>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Static', 'friendly_class_name': 'Static', 'texts': [''], 'control_id': 13576, 'rectangle': <RECT L679, T737, R1047, B756>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342177408, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R368, B19>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
{'class_name': 'Button', 'friendly_class_name': 'Button', 'texts': ['OK'], 'control_id': 1, 'rectangle': <RECT L1038, T791, R1126, B817>, 'is_visible': True, 'is_enabled': True, 'control_count': 0, 'style': 1342242816, 'exstyle': 4, 'user_data': 0, 'context_help_id': 0, 'fonts': [<LOGFONTW 'Yu Gothic UI' -12>], 'client_rects': [<RECT L0, T0, R88, B26>], 'is_unicode': True, 'menu_items': [], 'automation_id': ''}
>>>
>>> #Anzahl der Tasten
>>> len( app[u"Informationen zur Notepad-Version"].children(class_name="Button") )
1
>>> #Aufzählung der Schaltflächeninformationen
>>> for b in app[u"Informationen zur Notepad-Version"].children(class_name="Button") :
... print ( b.window_text() + " visible:" + str(b.is_visible()) + " enabled:" + str(b.is_enabled()) )
...
OK visible:True enabled:True
>>>
C:\>python
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pywinauto import Application
>>> Application().start('explorer.exe')
<pywinauto.application.Application object at 0x0000021F459F0FD0>
>>> app = Application().connect(path='explorer.exe')
>>>
>>> #Verbindungsbestätigung
>>> app[u"Forscher"].exists()
True
>>>
>>> #Einstellung des Ordnerpfads "Eigene Dateien"
>>> import os
>>> mydocument = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Documents')
>>>
>>> #Öffnen Sie den Ordner Eigene Dateien
>>> app[u"Forscher"].AddressBandRoot.type_keys(u"{ENTER}" + mydocument + "{ENTER}")
<hwndwrapper.HwndWrapper - '', Address Band Root, 264944>
>>>
>>> from pywinauto import Desktop
>>> d = Desktop(backend='uia')[u"Dokument"]
>>> d.ListBox.get_properties()
{'class_name': 'UIItemsView', 'friendly_class_name': 'ListBox', 'texts': [['', 'Name', 'Datum und Uhrzeit aktualisieren', 'Art', 'Größe'], ['', 'Name', 'Datum und Uhrzeit aktualisieren', 'Art', 'Größe'], ['', 'Name', 'Datum und Uhrzeit aktualisieren', 'Art', 'Größe']], 'control_id': 0, 'rectangle': <RECT L947, T306, R1605, B767>, 'is_visible': True, 'is_enabled': True, 'control_count': 5, 'is_keyboard_focusable': False, 'has_keyboard_focus': False, 'automation_id': '', 'column_count': 4, 'item_count': 3, 'columns': [<uiawrapper.UIAWrapper - 'Name', SplitButton, -5173013587085247480>, <uiawrapper.UIAWrapper - 'Datum und Uhrzeit aktualisieren', SplitButton, 7405196887091890411>, <uiawrapper.UIAWrapper - 'Art', SplitButton, 4224075079785634787>, <uiawrapper.UIAWrapper - 'Größe', SplitButton, 7052361179099937348>]}
>>>
>>> #Die Anzahl der Zeilen in der Liste ist
>>> d.ListBox.item_count()
3
>>>
>>> #Listenanzeige der Liste
>>> for i in d.ListBox.get_items() :
... i.window_text()
...
'Benutzerdefinierte Office-Vorlage'
'pywinauto'
'UISpy Settings'
>>>
Kontrollnamen und hierarchische Strukturen können mithilfe eines Tools namens UISPY hilfreich sein. Download aus diesem Bereich https://github.com/blackrosezy/gui-inspect-tool
>>> import os
>>> mydocument = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Documents')
>>> for file in os.listdir( mydocument ) :
... print( file )
...
Default.rdp
desktop.ini
My Music
My Pictures
My Videos
Benutzerdefinierte Office-Vorlage
pywinauto
UISpy Settings
>>>
Das? Sie können versteckte Dateien sehen, die Sie nicht sehen können. ..
>>> d = Desktop(backend='uia')[u"Dokument"]
>>> d.ListBox[u"Benutzerdefinierte Office-Vorlage"].invoke()
<uia_controls.ListItemWrapper - 'Benutzerdefinierte Office-Vorlage', ListItem, 8579292259166560630>
>>>
Recommended Posts