Skip to main content

Tool to perform UI Automation on Windows desktop applications using an underlying FlaUI wrapper.

Project description

flaui-uiautomation-wrapper

Pythonic, type-safe Windows UI automation — the full FlaUI API in Python.

PyPI - Version PyPI - Python Version PyPI - Downloads License

Build Status Ruff Interrogate Docs

FlaUI is a .NET library for UI automated testing of Windows desktop applications — Win32, WinForms, WPF, and Store apps — built on top of Microsoft's UI Automation technology. flaui-uiautomation-wrapper brings the complete FlaUI API to Python via Python.NET, so you get the full power of FlaUI without leaving the Python ecosystem.

Unlike existing Python integrations that are tied to a single test runner, this is a plug-and-play wrapper that works with any Python framework — pytest, Behave, TestPlan, unittest, or your own tooling — with first-class IDE intellisense backed by Pydantic models.

Key Differentiators

  • Complete feature parity — a 1:1 mapping of FlaUI's exposed C# API, not a thin subset.
  • Type safety — every input/output is backed by Pydantic models for validation and IDE autocompletion.
  • Any test framework — pytest, unittest, Behave, TestPlan, or none at all.
  • Pythonic API — snake_case methods and Python-native types while preserving the C# structure.

Installation

Windows-only · Python 3.10–3.14. The required C# DLLs are bundled in the wheel — no separate driver binaries to manage.

pip install flaui-uiautomation-wrapper
uv add flaui-uiautomation-wrapper

Quick start

from flaui.lib.pythonnet_bridge import setup_pythonnet_bridge

# MUST run before importing any C#-backed modules
setup_pythonnet_bridge()

from flaui.lib.enums import UIAutomationTypes
from flaui.modules.automation import Automation

automation = Automation(UIAutomationTypes.UIA3)
main_window = automation.application.launch("notepad.exe").get_main_window(automation)
main_window.find_first_by_x_path("//Button[@Name='OK']").as_button().invoke()

Documentation

Full documentation lives at amruthvvkp.github.io/flaui-uiautomation-wrapper, including:

  • Basics & Advanced guides (Initialize → Launch → Find → Interact, XPath, ConditionFactory, caching) with side-by-side Python/C# examples.
  • API Reference auto-generated for every control and pattern.
  • Examples for pytest, unittest, Behave, TestPlan, and Robot Framework.
  • Contributing guides for development, testing, and porting C# tests.

Roadmap

This project is in active development toward its first major release. Track progress on the v1.0.0 milestone and the full ROADMAP.md, which also outlines post-v1 companion tooling (a record-and-generate recorder, an MCP server, a pytest-flaui plugin, and FlaUI agent skills).

Have an idea or feature request? Join the GitHub Discussions.

Inspirations & Credits

  • FlaUI — the C# library this project wraps; its core logic and test applications are the foundation of this wrapper.
  • robotframework-flaui (GDATA) — the prior-art Python integration for FlaUI that influenced this project's direction.
  • Python.NET — the interop bridge that makes calling FlaUI from Python possible.
  • Playwright / pytest-playwright and FlaUIRecorder — inspirations for the planned recorder and pytest tooling.

Contributing

Contributions are welcome! See docs/contributing.md for the development workflow, coding standards, and testing guidelines.

License

Licensed under the LGPL-3.0-or-later.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flaui_uiautomation_wrapper-1.0.0b1.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flaui_uiautomation_wrapper-1.0.0b1-py3-none-any.whl (381.4 kB view details)

Uploaded Python 3

File details

Details for the file flaui_uiautomation_wrapper-1.0.0b1.tar.gz.

File metadata

File hashes

Hashes for flaui_uiautomation_wrapper-1.0.0b1.tar.gz
Algorithm Hash digest
SHA256 05a3ed69ca2d701ba8593b2c4261522d294528dd5bfa3e43ca2f8c9b42aafe10
MD5 816c2ea67a9d3e12d90af427deffc829
BLAKE2b-256 102a0942c75b5f5814bc57443c683f908f41dfff43c80a4d135312fb1301cc30

See more details on using hashes here.

File details

Details for the file flaui_uiautomation_wrapper-1.0.0b1-py3-none-any.whl.

File metadata

File hashes

Hashes for flaui_uiautomation_wrapper-1.0.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 d778cca6d81737380017262f6523ebfd47664d2c8af47813aad3c4625e3aa9fc
MD5 aa9f62caed94f4e727ba9d2749cc0ac6
BLAKE2b-256 db569182cafe1e7562b574c647267ac3978e83be3199aa7d9e20949af4873a6b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page