Skip to content
Vasily Ryabov edited this page Apr 15, 2017 · 29 revisions

Steps to make pywinauto true cross-platform

  • Remove Win32 dependencies from classes Application and WindowSpecification (or make these dependencies platform-optional).
  • Implement AT-SPI support on Linux (using native libatspi.so and ctypes).
  • Implement MacOS-specific mouse.py and keyboard.py.
  • Implement Apple Accessibility API support on MacOS.

pywinauto 0.6.x releases

  • UI Automation API support (WPF, WinForms, Qt, browsers). Available backends: "win32" (default) and "uia".

    • Rename "native" backend to "win32", add more tests for backend.py.
  • Application-specific backend switching.

    • app = Application(backend="uia").start('WpfApplication1.exe')
  • Better PEP-8 compliance.

  • Documentation issues:

    • Debugging tips and tricks (print_control_identifiers, wrapper_object etc.).
    • Better index page, supported controls/frameworks, more detailed main example.
    • Explain 2-level (multilevel?) WindowSpecification->wrappers concept (issue 120).
    • Enrich the docs for menu (issue 130).
    • Explain that native menu item is not a wrapper or WindowSpecification object.

    Control Types to Patterns matrix at MSDN.

    Implement wrappers covering all the control types:

    • Menu, MenuBar, MenuItem
    • Button, CheckBox, RadioButton
    • ComboBox (except multi-selection)
    • Edit
    • Tab, TabItem
    • Slider
    • List, Header, DataItem, ListItem
    • Tree, TreeItem
    • ToolBar
    • Table
    • ToolTip
    • StatusBar, ProgressBar
    • HeaderItem
    • Document
    • Window (a la DialogWrapper)
    • Calendar, Group, Hyperlink, SemanticZoom, ScrollBar, Thumb (?), SplitButton
    • TitleBar, AppBar, Spinner
    • Text, Image, Pane, Custom (?)

    Use all the control patterns

    • Dock
    • ExpandCollapse
    • GridItem
    • Grid
    • Invoke
    • ItemContainer
    • LegacyIAccessible (?)
    • MulipleView
    • RangeValue
    • ScrollItem
    • Scroll
    • SelectionItem
    • Selection
    • SynchronizedInput
    • TableItem
    • Table
    • Text
    • Toggle
    • VirtualizedItem
    • Value
    • Window

    Windows 8 and later

    • Annotation
    • Drag
    • Drop
    • ObjectModel
    • Spreadsheet
    • SpreadsheetItem
    • Styles
    • TextChild
    • TextV2
    • TransformV2

    Windows 8.1 and later

    • TextEdit

    Windows 10 and later

    • CustomNavigation

Future big TODOs

  • Review localization testing functionality (matching history) and write examples. useful link 1
  • Review optional tests sub-package and describe it in the docs/blog; maybe add some more tests.
  • [80% done] Write hooks.py module and probably related recorder.py.
  • Java Swing/AWT support (probably using JPype).