RPA.Windows

module RPA.Windows

class RPA.Windows.Windows

Windows(locators_path: Optional[str] = None)

The Windows is a library that can be used for Windows desktop automation.

Library is included in the rpaframework package by default, but as shown in the below example library can be also installed separately without rpaframework.

channels: - conda-forge dependencies: - python=3.9.13 - pip=22.1.2 - pip: - rpaframework-windows==7.0.2 # standalone Windows library (`rpaframework` includes this library)

About terminology

ControlType is a value referred to by locator keys type: or control. Represents type of application object, which can be e.g. Window, Button or ListItem.

Element is an entity of an application structure (e.g. certain button in a window), which can be identified by a locator. (also referred as Control)

WindowsElement is an library container object for the Element. All the keywords returning elements, will in fact return WindowsElement``s. The ones accepting ``locator or root_element as arguments, will accept WindowsElement as an argument value. (locator accepts strings as well)

Structure of the WindowsElement

class WindowsElement: item: Control # ``item`` contains object instance of the element locator: str # ``locator`` that found this element name: str # ``Name`` attribute of the element automation_id: str # ``AutomationId`` attribute of the element control_type: str # ``ControlTypeName`` attribute of the element class_name: str # ``ClassName`` attribute of the element left: int # element's rectangle left coordinate right: int # element's rectangle right coordinate top: int # element's rectangle top coordinate bottom: int # element's rectangle bottom coordinate width: int # element's rectangle horizontal width height: int # element's rectangle vertical height xcenter: int # element's rectangle center point x coordinate ycenter: int # element's rectangle center point y coordinate

Example of the WindowsElement usage

Locators

Locators are based on different strategies that can used identify Control object.

Available strategies that can be used for the locators:

KeyMaps to search property
nameName
classClassName
typeControlType
controlControlType
idAutomationId
automationidAutomationId
regexRegexName
subnameSubName
indexfoundIndex (int)
offsetoffset coordinates (x (int), y (int)) from control center
executabletarget window by its executable name
handletarget window handle (int)
desktopSPECIAL target desktop, no value for the key e.g. desktop:desktop and name:Calculator
processNOT YET SUPPORTED target window by its executable’s process id
depthsearchDepth (int) for finding Control (default 8)
pathtarget element by its index-based path traversal (e.g. path:2

About root element on locators

Locators work on currently active root element. At the start root element is the whole desktop. There are different ways on changing this root element.

Keyword Control Window is the most common method of setting certain system window as a root element for further actions using locators. In the absence of a provided root_element parameter, here’s how you can control the default root element resolving:

  • Set Anchor: Sets the active anchor window from which the search begins.
  • Control Window: Controls and focuses on a window and marks it as the current active window, from which all the subsequent searches will start from in the absence of a set anchor.
  • If there’s no set anchor nor active window, then the last resort will be the “Desktop” element itself.

Locators themselves support cascading syntax (denoted by character > in the locator string), which can denote root element in “parent (root) & child” terms.

For example.

On the above example the left side of the > character, id:controls, represents the root element (can be called as “parent element” in this case). Right side of the locator string, id:activate, represents “child” element and it will be searched under the “parent element”.

This way element search is more efficient, because search are restricted to certain section of element tree which can be quite huge especially on the desktop level and in certain applications.

Keyword examples:

some example locators, and can be omitted ie. space ` ` between locator keys means the same thing as and:

id:clearButton type:Group and name:"Number pad" > type:Button and index:4 type:Group and name:"Number pad" > control:Button index:5 id:Units1 > name:${unit} class:Button offset:370,0

About locator restrictions

Visual locators are not supported in this library and they can’t be used in the same chain with these Windows locators. Visual locators are supported by the RPA.Desktop library. Locator chaining (image and Windows locators) support will be added in the future.

Locator syntax does not yet support OR operation (only AND operations).

About search depth

The library does element search depth by default to the level of 8. This means that locator will look into 8 levels of elements under element tree of the root element. This can lead into situation where element can’t be found. To fix this it is recommended to set root element which can be found within 8 levels OR defining depth in the locator string to a bigger value, e.g. id:deeplyNestedButton depth:16. Useful keywords for setting root element are Control Window, Set Anchor and Get Element.

About the path strategy

When automation IDs and names aren’t enough (or not reliable), then you can fallback to the positions of elements in a tree. This can be achieved using the path: strategy to specify a list of element positions which indicates how to traverse the tree from parent to child beginning with the resolved root.

Examples

An alternative way to get the whole tree to explore it yourself would be to use the Print Tree keyword.

Keyboard and mouse

Keys for the keyboard actions are given using uiautomation specification.

Special keys which are given within {} syntax.

KeyMaps to action
LBUTTONLeft mouse button
RBUTTONRight mouse button
CANCELControl-break processing
MBUTTONMiddle mouse button (three-button mouse)
XBUTTON1X1 mouse button
XBUTTON2X2 mouse button
BACKBACKSPACE key
TABTAB key
CLEARCLEAR key
RETURNENTER key
ENTERENTER key
SHIFTSHIFT key
CTRLCTRL key
CONTROLCTRL key
ALTALT key
PAUSEPAUSE key
CAPITALCAPS LOCK key
KANAIME Kana mode
HANGUELIME Hanguel mode (maintained for compatibility; use VK_HANGUL)
HANGULIME Hangul mode
JUNJAIME Junja mode
FINALIME final mode
HANJAIME Hanja mode
KANJIIME Kanji mode
ESCESC key
ESCAPEESC key
CONVERTIME convert
NONCONVERTIME nonconvert
ACCEPTIME accept
MODECHANGEIME mode change request
SPACESPACEBAR
PRIORPAGE UP key
PAGEUPPAGE UP key
NEXTPAGE DOWN key
PAGEDOWNPAGE DOWN key
ENDEND key
HOMEHOME key
LEFTLEFT ARROW key
UPUP ARROW key
RIGHTRIGHT ARROW key
DOWNDOWN ARROW key
SELECTSELECT key
PRINTPRINT key
EXECUTEEXECUTE key
SNAPSHOTPRINT SCREEN key
PRINTSCREENPRINT SCREEN key
INSERTINS key
INSINS key
DELETEDEL key
DELDEL key
HELPHELP key
WINLeft Windows key (Natural keyboard)
LWINLeft Windows key (Natural keyboard)
RWINRight Windows key (Natural keyboard)
APPSApplications key (Natural keyboard)
SLEEPComputer Sleep key
NUMPAD0Numeric keypad 0 key
NUMPAD1Numeric keypad 1 key
NUMPAD2Numeric keypad 2 key
NUMPAD3Numeric keypad 3 key
NUMPAD4Numeric keypad 4 key
NUMPAD5Numeric keypad 5 key
NUMPAD6Numeric keypad 6 key
NUMPAD7Numeric keypad 7 key
NUMPAD8Numeric keypad 8 key
NUMPAD9Numeric keypad 9 key
MULTIPLYMultiply key
ADDAdd key
SEPARATORSeparator key
SUBTRACTSubtract key
DECIMALDecimal key
DIVIDEDivide key
F1F1 key
F2F2 key
F3F3 key
F4F4 key
F5F5 key
F6F6 key
F7F7 key
F8F8 key
F9F9 key
F10F10 key
F11F11 key
F12F12 key
F13F13 key
F14F14 key
F15F15 key
F16F16 key
F17F17 key
F18F18 key
F19F19 key
F20F20 key
F21F21 key
F22F22 key
F23F23 key
F24F24 key
NUMLOCKNUM LOCK key
SCROLLSCROLL LOCK key
LSHIFTLeft SHIFT key
RSHIFTRight SHIFT key
LCONTROLLeft CONTROL key
LCTRLLeft CONTROL key
RCONTROLRight CONTROL key
RCTRLRight CONTROL key
LALTLeft MENU key
RALTRight MENU key
BROWSER_BACKBrowser Back key
BROWSER_FORWARDBrowser Forward key
BROWSER_REFRESHBrowser Refresh key
BROWSER_STOPBrowser Stop key
BROWSER_SEARCHBrowser Search key
BROWSER_FAVORITESBrowser Favorites key
BROWSER_HOMEBrowser Start and Home key
VOLUME_MUTEVolume Mute key
VOLUME_DOWNVolume Down key
VOLUME_UPVolume Up key
MEDIA_NEXT_TRACKNext Track key
MEDIA_PREV_TRACKPrevious Track key
MEDIA_STOPStop Media key
MEDIA_PLAY_PAUSEPlay/Pause Media key
LAUNCH_MAILStart Mail key
LAUNCH_MEDIA_SELECTSelect Media key
LAUNCH_APP1Start Application 1 key
LAUNCH_APP2Start Application 2 key
OEM_1Used for miscellaneous characters; it can vary by keyboard.For the US standard keyboard, the ‘;:’ key
OEM_PLUSFor any country/region, the ‘+’ key
OEM_COMMAFor any country/region, the ‘,’ key
OEM_MINUSFor any country/region, the ‘-‘ key
OEM_PERIODFor any country/region, the ‘.’ key
OEM_2Used for miscellaneous characters; it can vary by keyboard.
OEM_3Used for miscellaneous characters; it can vary by keyboard.
OEM_4Used for miscellaneous characters; it can vary by keyboard.
OEM_5Used for miscellaneous characters; it can vary by keyboard.
OEM_6Used for miscellaneous characters; it can vary by keyboard.
OEM_7Used for miscellaneous characters; it can vary by keyboard.
OEM_8Used for miscellaneous characters; it can vary by keyboard.
OEM_102Either the angle bracket key or the backslash key on the RT 102-key keyboard
PROCESSKEYIME PROCESS key
PACKETUsed to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KeyUp
ATTNAttn key
CRSELCrSel key
EXSELExSel key
EREOFErase EOF key
PLAYPlay key
ZOOMZoom key
NONAMEReserved
PA1PA1 key
OEM_CLEARClear key

Examples.

lib = Windows() # {Ctrl}, {Delete} ... are special keys' name in SpecialKeyNames. lib.send_keys('{Ctrl}a{Delete}{Ctrl}v{Ctrl}s{Ctrl}{Shift}s{Win}e{PageDown}') #press Ctrl+a, Delete, Ctrl+v, Ctrl+s, Ctrl+Shift+s, Win+e, PageDown lib.send_keys('{Ctrl}(AB)({Shift}(123))') #press Ctrl+A+B, type '(', press Shift+1+2+3, type ')', if '()' follows a hold key, hold key won't release util ')' lib.send_keys('{Ctrl}{a 3}') #press Ctrl+a at the same time, release Ctrl+a, then type 'a' 2 times lib.send_keys('{a 3}{B 5}') #type 'a' 3 times, type 'B' 5 times lib.send_keys('{{}Hello{}}abc {a}{b}{c} test{} 3}{!}{a} (){(}{)}') #type: '{Hello}abc abc test}}}!a ()()' lib.send_keys('0123456789{Enter}') lib.send_keys('ABCDEFGHIJKLMNOPQRSTUVWXYZ{Enter}') lib.send_keys('abcdefghijklmnopqrstuvwxyz{Enter}') lib.send_keys('`~!@#$%^&*()-_=+{Enter}') lib.send_keys('[]{{}{}}\|;:'",<.>/?{Enter}')

Using access key of the element (element property -> AccessKey ‘alt+s’). The (+s) means that previous special key is kept down until closing parenthesis is reached.

On the below example this means that ‘ALT’ key is pressed down, then ‘+’ and ‘s’ keys are pressed down before they are all released up.

Mouse clicks can be executed with keywords specific for a type of a click, e.g. Click (normal click), Double Click and Right Click.

How to inspect

Most common, and recommended by Microsoft, inspector tool for Windows is Accessibility Insights that can be installed separately. Other options are tools Inspect Object and UI Automation Verify, which can be accessed by installing Windows SDK.

A more programmatic approach is to run Print Tree log_as_warnings=${True} keyword and then observe in the logs the found elements structure starting from Desktop (or the currently set anchor / active window) as root. (refer to keyword’s documentation for more details)

Recording

The package provides some rudimentary inspecting and recording via the windows-record script, which can be started through the command line (in an environment containing the rpaframework-windows installation).

Recording inspects elements on mouse click and can be stopped by pressing the ESC key. Expected console output:

C:\Users\User\robots\> windows-record -v # or > python -m RPA.Windows -v Mouse recording started. Use ESC to stop recording. -------------------------------------------------------------------------------- Copy-paste the code below into your `*** Tasks ***` or `*** Keywords ***` -------------------------------------------------------------------------------- Control Window name:Calculator and type:WindowControl and class:ApplicationFrameWindow # handle:9569486 Click name:Calculator and id:TitleBar and type:WindowControl and class:ApplicationFrameTitleBarWindow and path:1 Click name:"Display is 0" and id:CalculatorResults and type:TextControl and path:2|3|2|2 Click name:Eight and id:num8Button and type:ButtonControl and class:Button and path:2|3|2|8|9 Click name:Nine and id:num9Button and type:ButtonControl and class:Button and path:2|3|2|8|10 Click name:Clear and id:clearButton and type:ButtonControl and class:Button and path:2|3|2|5|3 --------------------------------------------------------------------------------

Check our Portal example in order to learn more abot the path: strategy in locators and how to record elements displaying their paths: https://robocorp.com/portal/robot/robocorp/example-windows-element-path

Video recorded demo on how to run the recorder script from VSCode: https://www.loom.com/share/2807372359f34b9cbe1bc2df9194ec68

Caveats

  • Make sure your display scaling is set to 100%, otherwise you might encounter issues when clicking or interacting with elements. (since offsets and coordinates get distorted)
  • Disturbing the automation (like interacting with your mouse/keyboard) or having other apps obstructing the process interacting with your app of interest will most probably affect the expected behaviour. In order to avoid this, try controlling the app’s main window right before sending clicks or keys. And keep targeting elements through string locators, as interacting with Windows element objects previously retrieved will not work as expected in a future altered state of the app (changes under the element structure).

Example: Robot Framework

The library must be imported first.

Windows Calculator automation task

Example: Python

from RPA.Windows import Windows library = Windows() def test_do_some_calculations(): library.windows_run("calc.exe") try: library.control_window("name:Calculator") library.click("id:clearButton") library.send_keys(keys="96+4=") result = library.get_attribute("id:CalculatorResults", "Name") print(result) buttons = library.get_elements( 'type:Group and name:"Number pad" > type:Button' ) for button in buttons: print(button) finally: library.close_current_window()

variable ROBOT_LIBRARY_DOC_FORMAT

ROBOT_LIBRARY_DOC_FORMAT = 'REST'

variable ROBOT_LIBRARY_SCOPE

ROBOT_LIBRARY_SCOPE = 'GLOBAL'

variable SIMULATE_MOVE

SIMULATE_MOVE = False

method add_library_components

add_library_components(library_components: List)

method clear_anchor

clear_anchor()

Clears control anchor set by Set Anchor

This means that all following keywords accessing elements will use active window or desktop as root element.


method click

click(locator: Union[WindowsElement, str], wait_time: Optional[float] = None, timeout: Optional[float] = None)

Mouse click on element matching given locator.

Exception ActionNotPossible is raised if element does not allow Click action.

Parameters
  • locator – String locator or element object.
  • wait_time – time to wait after click, default is a library wait_time, see keyword Set Wait Time
  • timeout – float value in seconds, see keyword Set Global Timeout
  • Returns: WindowsElement object


method close_current_window

close_current_window()

Closes current active window or logs a warning message.

  • Returns: True if close was successful, False if not


method close_window

close_window(locator: Optional[Union[WindowsElement, str]] = None, timeout: Optional[float] = None)

Closes identified windows or logs the problems.

Parameters
  • locator – String locator or Control element.
  • timeout – float value in seconds, see keyword Set Global Timeout
  • Returns: How many windows were found and closed.


method control_child_window

control_child_window(locator: Optional[Union[WindowsElement, str]] = None, foreground: bool = True, wait_time: Optional[float] = None, timeout: Optional[float] = None)

Get control of child window of the active window by locator.

Parameters
  • locator – string locator or Control element
  • foreground – True to bring window to foreground
  • wait_time – time to wait after activeting a window
  • timeout – float value in seconds, see keyword Set Global Timeout
  • Returns: WindowsElement object


method control_window

control_window(locator: Optional[Union[WindowsElement, str]] = None, foreground: bool = True, wait_time: Optional[float] = None, timeout: Optional[float] = None, main: bool = True)

Controls the window defined by the locator.

This means that this window is used as a root element for all the following keywords using locators.

Returns WindowsElement.

Parameters
  • locator – string locator or Control element
  • foreground – True to bring window to foreground
  • wait_time – time to wait after activating a window
  • timeout – float value in seconds, see keyword Set Global Timeout
  • main – on True (default) starts the search from desktop level, on False it will continue to search for child elements given the set anchor or current active window
  • Returns: WindowsElement object


method disable_process_listing

disable_process_listing()

Disables process iteration in List Windows keyword.


method double_click

double_click(locator: Union[WindowsElement, str], wait_time: Optional[float] = None, timeout: Optional[float] = None)

Double mouse click on element matching given locator.

Exception ActionNotPossible is raised if element does not allow Click action.

Parameters
  • locator – String locator or element object.
  • wait_time – time to wait after click, default is a library wait_time, see keyword Set Wait Time
  • timeout – float value in seconds, see keyword Set Global Timeout
  • Returns: WindowsElement object


method drag_and_drop

drag_and_drop(source_element: Union[WindowsElement, str], target_element: Union[WindowsElement, str], speed: Optional[float] = 1.0, copy: Optional[bool] = False, wait_time: Optional[float] = 1.0)

Drag and drop the source element into target element.

Parameters
  • source – source element for the operation
  • target – target element for the operation
  • speed – adjust speed of operation, bigger value means more speed
  • copy – on True does copy drag and drop, defaults to move
  • wait_time – time to wait after drop, default 1.0 seconds


method enable_process_listing

enable_process_listing()

Enables process iteration in List Windows keyword.


method foreground_window

foreground_window(locator: Optional[Union[WindowsElement, str]] = None)

Bring the current active window or the window defined by the locator to the foreground.

  • Parameters: locator – string locator or Control element
  • Returns: WindowsElement object


method get_attribute

get_attribute(locator: Union[WindowsElement, str], attribute: str)

Get attribute value of the element defined by the locator.

Parameters
  • locator – string locator or Control element
  • attribute – name of the attribute to get
  • Returns: value of attribute


method get_element

get_element(locator: Optional[Union[WindowsElement, str]] = None, search_depth: int = 8, root_element: Optional[WindowsElement] = None, timeout: Optional[float] = None)

Get a Control Windows element defined by the locator.

The returned element can be used instead of a locator string for other keywords accepting the locator parameter. Keyword Get Attribute can be used to read element attribute values.

If locator is None, then the returned element will be in this priority:

  1. root_element if provided.
  2. Anchor element if that has been previously set with Set Anchor.
  3. Current active window if that has been set with Control Window.
  4. Last resort is the “Desktop” element.
Parameters
  • locator – Locator as a string or as an element object.
  • search_depth – How deep the element search will traverse. (default 8)
  • root_element – Will be used as search root element object if provided.
  • timeout – After how many seconds (float) to give up on search. (see keyword Set Global Timeout)
  • Returns: The identified WindowsElement object.

Example: Robot Framework

Example: Python

from RPA.Windows import Windows lib = Windows() lib.windows_run("calc.exe") one_btn = lib.get_element("Calculator > path:2|3|2|8|2") lib.close_window("Calculator")

method get_elements

get_elements(locator: Optional[Union[WindowsElement, str]] = None, search_depth: int = 8, root_element: Optional[WindowsElement] = None, timeout: Optional[float] = None, siblings_only: bool = True)

Get a list of elements matching the locator.

By default, only the siblings (similar elements on the same level) are taken into account. In order to search globally, turn siblings_only off, but be aware that this will take more time to process.

Note that if the syntax parent_locator > child_locator is used in the locator, it is assumed that parent_locator returns a singular element - i.e. if the locator parent_locator returns multiple elements, only the first result is used for further processing, even if siblings_only is off.

For more details on the rest of parameters, take a look at the Get Element keyword.

Parameters
  • locator – Locator as a string or as an element object.
  • search_depth – How deep the element search will traverse. (default 8)
  • root_element – Will be used as search root element object if provided.
  • timeout – After how many seconds (float) to give up on search. (see keyword Set Global Timeout)
  • siblings_only – Filter for elements on the same level as the initially found one. Turn it off for a global search. (True by default)
  • Returns: A list of matching WindowsElement objects.

Example: Robot Framework


method get_keyword_arguments

get_keyword_arguments(name)

method get_keyword_documentation

get_keyword_documentation(name)

method get_keyword_names

get_keyword_names()

method get_keyword_source

get_keyword_source(keyword_name)

method get_keyword_tags

get_keyword_tags(name)

method get_keyword_types

get_keyword_types(name)

method get_os_version

get_os_version()

Returns the current Windows major version as string.


method get_text

get_text(locator: Union[WindowsElement, str])

Get text from Control element defined by the locator.

Exception ActionNotPossible is raised if element does not allow GetWindowText action.

  • Parameters: locator – String locator or element object.
  • Returns: value of WindowText attribute of an element


method get_value

get_value(locator: Union[WindowsElement, str])

Get the value of the element defined by the provided locator.

The ActionNotPossible exception is raised if the identified element doesn’t support value retrieval.

  • Parameters: locator – String locator or element object.
  • Returns: Optionally the value of the identified element.

Example: Robot Framework

Example: Python

from RPA.Windows import Windows lib_win = Windows() text = lib_win.get_value("Rich Text Window") print(text)

method list_attributes

list_attributes(locator: Union[WindowsElement, str])

List all element attributes.

  • Parameters: locator – string locator or Control element
  • Returns: list of element attributes (strings)

method list_windows

list_windows(icons: bool = False, icon_save_directory: Optional[str] = None)

List all window element on the system.

Parameters
  • icons – on True dictionary will contain Base64 string of the icon, default False
  • icon_save_directory – if set will save retrieved icons into this filepath, by default icon files are not saved
  • Returns: list of dictionaries containing information about Window elements


method maximize_window

maximize_window(locator: Optional[Union[WindowsElement, str]] = None)

Maximize the current active window or the window defined by the locator.

  • Parameters: locator – string locator or element
  • Returns: WindowsElement object


method middle_click

middle_click(locator: Union[WindowsElement, str], wait_time: Optional[float] = None, timeout: Optional[float] = None)

Right mouse click on element matching given locator.

Exception ActionNotPossible is raised if element does not allow Click action.

Parameters
  • locator – String locator or element object.
  • wait_time – time to wait after click, default is a library wait_time, see keyword Set Wait Time
  • timeout – float value in seconds, see keyword Set Global Timeout
  • Returns: WindowsElement object


method minimize_window

minimize_window(locator: Optional[Union[WindowsElement, str]] = None)

Minimize the current active window or the window defined by the locator.

  • Parameters: locator – string locator or element
  • Returns: WindowsElement object


method print_tree

print_tree(locator: Optional[Union[WindowsElement, str]] = None, max_depth: int = 8, capture_image_folder: Optional[str] = None, log_as_warnings: bool = False, return_structure: bool = False)

Print a tree of control elements.

A Windows application structure can contain multilevel element structure. Understanding this structure is crucial for creating locators. (based on controls’ details and their parent-child relationship)

This keyword can be used to output logs of application’s element structure, starting with the element defined by the provided locator as root. Switch the return_structure parameter to True to get a tree of elements returned as well. (off by default to save memory)

  • The printed structure displays a tree prefixed with “depth” - “position” so you know how deep (0 means root) in the tree you are and on what position (1-indexed) the child you’re looking for is.
  • The returned structure is a dictionary with all the children flattened per depth level. Additionally, these WindowsElement objects contain a relevant locator composed of “root > path” which will help to identify the element in the tree.

Portal example: https://robocorp.com/portal/robot/robocorp/example-windows-element-path

Parameters
  • locator – The root of the tree to output.
  • max_depth – Maximum depth level. (defaults to 8)
  • capture_image_folder – If set, controls’ images will be captured in this path.
  • log_as_warnings – Enables highlighted logs (at the beginning of the log file as warnings) and increases visibility in the output console.
  • return_structure – A flattened tree with all the elements collated by level will be returned if this is enabled.
  • Returns: Optionally a dictionary of children per depth level when return_structure is enabled.

Example: Robot Framework

Example: Python

from RPA.Windows import Windows lib = Windows() tree = lib.print_tree("Calculator > path:2|3|2|8", return_structure=True) print(tree)

method restore_window

restore_window(locator: Optional[Union[WindowsElement, str]] = None)

Window restore the current active window or the window defined by the locator.

  • Parameters: locator – string locator or element
  • Returns: WindowsElement object


method right_click

right_click(locator: Union[WindowsElement, str], wait_time: Optional[float] = None, timeout: Optional[float] = None)

Right mouse click on element matching given locator.

Exception ActionNotPossible is raised if element does not allow Click action.

Parameters
  • locator – String locator or element object.
  • wait_time – time to wait after click, default is a library wait_time, see keyword Set Wait Time
  • timeout – float value in seconds, see keyword Set Global Timeout
  • Returns: WindowsElement object


method run_keyword

run_keyword(name, args, kwargs=None)

method screenshot

screenshot(locator: Union[WindowsElement, str], filename: Union[str, Path])

Take a screenshot of the element defined by the locator.

An ActionNotPossible exception is raised if the element doesn’t allow being captured.

Parameters
  • locator – String locator or element object.
  • filename – Image file name/path. (can be absolute/relative)
  • Raises: ActionNotPossible – When the element can’t be captured.
  • Returns: Absolute file path of the taken screenshot image.

Example: Robot Framework

Example: Python

from RPA.Windows import Windows lib = Windows() def take_screenshots(): lib.screenshot("desktop", "desktop.png") lib.screenshot("subname:Notepad", "output/notepad.png")

method select

select(locator: Union[WindowsElement, str], value: str)

Select a value on the passed element if such action is supported.

The ActionNotPossible exception is raised when the element does not allow the Select action. This is usually used with combo box elements.

Parameters
  • locator – String locator or element object.
  • value – String value to select on Control element
  • Returns: The controlled Windows element.

Example: Robot Framework

* Settings * Library RPA.Windows

* Tasks * Set Notepad Size

Select id:FontSizeComboBox 22

Example: Python

from RPA.Windows import Windows lib = Windows() def set_notepad_size(): lib.select("id:FontSizeComboBox", "22")

method send_keys

send_keys(locator: Optional[Union[WindowsElement, str]] = None, keys: Optional[str] = None, interval: float = 0.01, wait_time: Optional[float] = None, send_enter: bool = False)

Send keys to desktop, current window or to Control element defined by given locator.

If locator is None then keys are sent to desktop.

Exception ActionNotPossible is raised if element does not allow SendKeys action.

Parameters
  • locator – Optional string locator or element object.
  • keys – The keys to send.
  • interval – Time between each sent key. (defaults to 0.01 seconds)
  • wait_time – Time to wait after sending all the keys. (defaults to library’s set value, see keyword Set Wait Time)
  • send_enter – If True then the {Enter} key is pressed at the end of the sent keys.
  • Returns: The element identified through locator.


method set_anchor

set_anchor(locator: Union[WindowsElement, str], timeout: Optional[float] = None)

Set anchor to an element specified by the locator.

All following keywords using locators will use this element as a root element. Specific use case could be setting anchor to TableControl element and then getting column data belonging to that TableControl element.

To release anchor call Clear Anchor keyword.

Parameters
  • locator – string locator or Control element
  • timeout – timeout in seconds for element lookup (default 10.0)


method set_focus

set_focus(locator: Union[WindowsElement, str])

Set view focus to the element defined by the locator.

  • Parameters: locator – String locator or element object.


method set_global_timeout

set_global_timeout(timeout: float)

Set global timeout for element search. Applies also to Control Window keyword.

By default, the library has a timeout of 10 seconds.

  • Parameters: timeout – float value in seconds
  • Returns: previous timeout value


method set_mouse_movement

set_mouse_movement(simulate: bool)

Enable or disable mouse movement simulation during clicks and other actions.

Returns the previous set value as True/False.

  • Parameters: simulate – Decide whether to simulate the move. (OFF by default)
  • Returns: Previous state.

Example: Robot Framework

Example: Python

from RPA.Windows import Windows lib_win = Windows() previous = lib_win.set_mouse_movement(True) print(f"Previous mouse simulation: {previous} (now enabled)")

method set_value

set_value(locator: ~typing.Optional[~typing.Union[~RPA.core.windows.locators.WindowsElement, str]] = None, value: ~typing.Optional[str] = None, append: bool = False, enter: bool = False, newline: bool = False, send_keys_fallback: bool = True, validator: ~typing.Optional[~typing.Callable] = )

Set value of the element defined by the locator.

Note: An anchor will work only on element structures where you can rely on the stability of that root/child element tree, as remaining the same. Usually these kind of structures are tables. (but not restricted to)

Note: It is important to set append=${True} if you want to keep the current text in the element. Other option is to read the current text into a variable, then modify that value as you wish and pass it to the Set Value keyword for a complete text replacement. (without setting the append flag)

The following exceptions may be raised:

  • ActionNotPossible if the element does not allow the SetValue action to be run on it nor having send_keys_fallback=${True}.
  • ValueError if the new value to be set can’t be set correctly.
Parameters
  • locator – String locator or element object.
  • value – String value to be set.
  • append – False for setting the value, True for appending it. (OFF by default)
  • enter – Set it to True to press the Enter key at the end of the input. (nothing is pressed by default)
  • newline – Set it to True to add a new line at the end of the value. (no EOL included by default; this won’t work with send_keys_fallback enabled)
  • send_keys_fallback – Tries to set the value by sending it through keys if the main way of setting it fails. (enabled by default)
  • validator – Function receiving two parameters post-setting, the expected and the current value, which returns True if the two values match. (by default, the keyword will raise if the values are different, set this to None to disable validation or pass your custom function instead)
  • Returns: The element object identified through the passed locator.

Example: Robot Framework

Example: Python

from RPA.Windows import Windows lib_win = Windows() locator = "Document - WordPad > Rich Text Window" elem = lib_win.set_value(locator, value="My text", send_keys_fallback=True) text = lib_win.get_value(elem) print(text)

method set_wait_time

set_wait_time(wait_time: float)

Set library wait time for action keywords.

The wait_time is spent after each keyword performing mouse or keyboard action.

Library default wait_time is 0.5

Returns value of the previous wait_time value.

  • Parameters: wait_time – float value (in seconds), e.g. 0.1
  • Returns: previous wait value


method windows_run

windows_run(text: str, wait_time: float = 3.0)

Use Windows Run window to launch an application.

Activated by pressing Win + R. Then the app name is typed in and finally the “Enter” key is pressed.

Parameters
  • text – Text to enter into the Run input field. (e.g. Notepad)
  • wait_time – Time to sleep after the searched app is executed. (3s by default)

Example: Robot Framework

Example: Python

from RPA.Windows import Windows lib = Windows() def run_notepad(): lib.windows_run("notepad")

method windows_search

windows_search(text: str, wait_time: float = 3.0)

Use Windows search window to launch application.

Activated by pressing win + s.

Parameters
  • text – text to enter into search input field
  • wait_time – sleep time after search has been entered (default 3.0 seconds)