- Notifications
You must be signed in to change notification settings - Fork713
Windows GUI Automation with Python (based on text properties)
License
pywinauto/pywinauto
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
pywinauto is a set of python modules to automate the Microsoft Windows GUI.At its simplest it allows you to send mouse and keyboard actions to windowsdialogs and controls, but it has support for more complex actions like getting text data.
Supported technologies under the hood: Win32 API (backend="win32"
; used by default),MS UI Automation (backend="uia"
). User input emulation modulesmouse
andkeyboard
work on both Windows and Linux.
Just star the repo or make a donation.
Your help is valuable since this is a hobby project for all of us: we donew features development during out-of-office hours.
- In general the librarytends to be cross-platform in the near future (Linux in 2018, macOS in 2019).
- Reliable text based"record-replay" generator is also a high priority feature under development.
- More feature requests and discusions are welcome inthe issues.
- run
pip install -U pywinauto
(dependencies will be installed automatically)
- Short Intro on ReadTheDocs
- Getting Started Guide (core concept, Spy/Inspect tools etc.)
- StackOverflow tag for questions
- Mailing list
It is simple and the resulting scripts are very readable. How simple?
frompywinauto.applicationimportApplicationapp=Application().start("notepad.exe")app.UntitledNotepad.menu_select("Help->About Notepad")app.AboutNotepad.OK.click()app.UntitledNotepad.Edit.type_keys("pywinauto Works!",with_spaces=True)
More detailed example forexplorer.exe
:
frompywinautoimportDesktop,ApplicationApplication().start('explorer.exe "C:\\Program Files"')# connect to another process spawned by explorer.exe# Note: make sure the script is running as Administrator!app=Application(backend="uia").connect(path="explorer.exe",title="Program Files")app.ProgramFiles.set_focus()common_files=app.ProgramFiles.ItemsView.get_item('Common Files')common_files.right_click_input()app.ContextMenu.Properties.invoke()# this dialog is open in another process (Desktop object doesn't rely on any process id)Properties=Desktop(backend='uia').Common_Files_PropertiesProperties.print_control_identifiers()Properties.Cancel.click()Properties.wait_not('visible')# make sure the dialog is closed
- Windows:
- Linux:
- Optional packages:
- InstallPillow (by
pip install -U Pillow
) to be able to callcapture_as_image()
method for making a control's snapshot.
- InstallPillow (by
Run all the tests:python ./pywinauto/unittests/testall.py
Pull requests are very welcome. ReadContribution Guide for more details about unit tests, coding conventions, etc.
Pywinauto for native Windows GUI was initially written byMark Mc Mahon.Mark brought many great ideas into the life using power of Python.Further contributors are inspired of the nice API so that the development continues.
Starting from 0.6.0 pywinauto is distributed under the BSD 3-clause license.Pywinauto 0.5.4 and before was distributed under the LGPL v2.1 or later.
- (c)The Open Source Community, 2015-2018 (0.6.0+ development)
- (c) Intel Corporation, 2015 (0.5.x maintenance)
- (c) Michael Herrmann, 2012-2013 (0.4.2)
- (c) Mark Mc Mahon, 2006-2010 (0.4.0 and before)
About
Windows GUI Automation with Python (based on text properties)