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 findingWindowElement
s and interacting directly with the desktop (so, actions which aren't tied to a Window or Control can be used directly through theDesktop
).WindowElement
: enables findingControlElement
s and interacting with a Window.ControlElement
: enables finding childControlElement
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.
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:
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=")
Information on specific functions or classes: robocorp.windows
A list of releases and corresponding changes can be found in the changelog.
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).