Skip to main content

Python library for GUI automation and testing

Project description

pywinauto is a set of python modules to automate the Microsoft Windows GUI. At it’s simplest it allows you to send mouse and keyboard actions to windows dialogs and controls.

0.3.8 Collecting improvements from last 2 years


  • Fixed toolbar button pressing - This required for HwndWrapper.NotifyParent() to be updated (to accept a new ID parameter)
  • Fixed a bug wherea listview without a column control would make pywinauto fail to capture the dialog.
  • Converted documenation from Pudge generated to Sphinx Generated
  • Added some baic support for Pager and Progress controls (no tests yet)
  • Added some more VB ‘edit’ window classes
  • Added some more VB ‘listbox’ window classes
  • Added some more VB ‘button’ window classes
  • Ensured that return value from ComboBoxWrapper.SelectedIndices is always a tuple (there was a bug where it would sometimes be a ctypes array)
  • Changed default for finding windows to find disabled windows as well as enabled ones (previous was to find enabled windows only) (note this may impact scripts that relied on the previous setting i.e. in cases where two dialogs have the same title!)
  • Much better handling of InvalidWindowHandle during automation runs. This could be raised when a closing window is still available when the automation was called, but is gone half way through whatever function was called.
  • Made clicking more robust by adding a tiny wait between each SendMessageTimeout in _perform_click().
  • Added attributes can_be_label and has_title to HwndWrapper and subclasses to specify whether a control can act as a label for other controls, and whether the title should be used for identifying the control. If you have created your own HwndWrapper subclasses you may need to override the defaults.
  • Added a control_id parameter to find_windows which allows finding windows based off of their control id’s
  • Added a FriendlyClassName method to MenuItem
  • Split up the functions for button truncation data
  • Commented out code to get a new font if the font could not be recovered
  • Moved code to get the control font from Truncation test to handleprops
  • Added a function to get the string representation of the bug. (need to refactor PrintBugs at some point).
  • Fixed a variable name (from fname -> font_attrib as fname was not a defined variable!)
  • Forced some return values from MissingExtraString test to be Unicode
  • Fixed the MiscValues test (converted to Unicode and removed some extraneous characters)
  • Updated the path for all unittests
  • Made two unit tests sligthly more robust and less dependent on computer/app settings
  • Updated timing settings for unit tests
  • Updated the examples to work in dev environment.

You can join the mailing list or view the list archives at:

Project details

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page