Metadata-Version: 2.1
Name: robocorp-windows
Version: 1.0.1
Summary: Robocorp Windows Automation (API to automate Windows)
Home-page: https://github.com/robocorp/robocorp/
License: Apache-2.0
Author: Fabio Z.
Author-email: fabio@robocorp.com
Requires-Python: >=3.9,<4.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: comtypes (>=1.1,<2.0)
Requires-Dist: pillow (>=10.0.1,<11.0.0)
Requires-Dist: psutil (>=5.9.0,<6.0.0)
Requires-Dist: pywin32 (>=300,<304) ; python_full_version != "3.8.1" and sys_platform == "win32"
Project-URL: Repository, https://github.com/robocorp/robocorp/
Description-Content-Type: text/markdown

`robocorp-windows` is a library which can be used for Windows desktop automation.

The basic idea of the library is enabling windows and controls to be found
by leveraging `locators` (i.e.: strings which identify how to reach some
window or control) and then interacting with such elements.

There are 3 basic abstractions in the library:

- `Desktop`: enables finding `WindowElement`s and interacting directly with the 
  desktop (so, actions which aren't tied to a Window or Control can be used directly
  through the `Desktop`).
- `WindowElement`: enables finding `ControlElement`s and interacting with a Window.
- `ControlElement`: enables finding child `ControlElement`s and interacting with a specific Control.

Note: these classes are always created by the library itself and are not expected
to be subclassed or instanced directly.

## Usage

The library concepts revolve around the idea that the window of interest will be 
initially found using `find_window` and then, with that window reference, other
controls can be queried and interacted with (for clicking, entering text, etc).

Below is an example using the windows calculator:


```python
from robocorp import windows

# Get the calculator window
calc = windows.find_window("name:Calculator")

# Press button 0 (the locator is dependent on the windows version).
button0 = calc.find('(name:Zero or name:0) and class:Button')
button0.click()

# Clear the calculator (the locator is dependent on the windows version).
calc.click("id:clearButton or name:Clear")

# Send the keys directly to the calculator
calc.send_keys(keys="96+4=")
```


## Guides

- [Understanding Locators](https://github.com/robocorp/robocorp/blob/master/windows/docs/guides/00-locators.md)
- [Building Locators using the builtin inspector](https://github.com/robocorp/robocorp/blob/master/windows/docs/guides/01-locator-inspecting.md)
- [Special keys](https://github.com/robocorp/robocorp/blob/master/windows/docs/guides/02-special-keys.md)


## API Reference

Information on specific functions or classes: [robocorp.windows](https://github.com/robocorp/robocorp/blob/master/windows/docs/api/robocorp.windows.md)

## Changelog

A list of releases and corresponding changes can be found in the [changelog](https://github.com/robocorp/robocorp/blob/master/windows/docs/CHANGELOG.md).

## Versioning

This library uses semantic versioning, so, when a breaking change is done
a new major version is published, but beware that modules starting with an 
underscore `_` in `robocorp.windows` are not considered
part of the public API and should not be imported directly (so, only objects/classes
reached from the `robocorp.windows` namespace should be used -- if access to some
other method/class is needed, please create a feature request to address it).

