robotframework-applicationlibrary
===========
[![PyPI version](https://badge.fury.io/py/robotframework-applicationlibrary.svg)](https://badge.fury.io/py/robotframework-applicationlibrary)
[![Downloads](https://pepy.tech/badge/robotframework-applicationlibrary)](https://pepy.tech/project/robotframework-applicationlibrary)
[![Build Status](https://github.com/Accruent/robotframework-applicationlibrary/workflows/tests/badge.svg?branch=master)](https://github.com/Accruent/robotframework-applicationlibrary/actions?query=workflow%3Atests)
[![Coverage Status](https://coveralls.io/repos/github/Accruent/robotframework-applicationlibrary/badge.svg?branch=master)](https://coveralls.io/github/Accruent/robotframework-applicationlibrary?branch=master)
[![CodeFactor](https://www.codefactor.io/repository/github/accruent/robotframework-applicationlibrary/badge)](https://www.codefactor.io/repository/github/accruent/robotframework-applicationlibrary)
Introduction
--------------
Robotframework-ApplicationLibrary is a collection of libraries spanning Mobile and Windows Desktop (WinAppDriver) automation using [Robot Framework](https://github.com/robotframework/robotframework).
These libraries are and extensions of the existing [AppiumLibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary). ApplicationLibrary extends the functionality
of AppiumLibrary for Mobile app testing and adds support Windows desktop automation.
In the course of our own automation as a team, we found that out-of-the-box AppiumLibrary did not fit our needs for mobile testing and needed major rework inorder to get it working with WinAppDriver for Desktop testing.
Originally this code was a part of [RobotFramework-Zoomba](https://github.com/Accruent/robotframework-zoomba) but diverging dependency requirements lead to a need for two separate repositories.
See the **Keyword Documentation** for the [Mobile](https://accruent.github.io/robotframework-applicationlibrary/MobileLibraryDocumentation.html) or [Desktop](https://accruent.github.io/robotframework-applicationlibrary/DesktopLibraryDocumentation.html) libraries for more specific information about the functionality.
Example tests can be found in the [samples directory](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/samples).
Some Features of the Library
--------------
#### [Mobile Library](https://accruent.github.io/robotframework-applicationlibrary/MobileLibraryDocumentation.html):
Extending the [AppiumLibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary) we added some quality of life 'Wait For And' type keywords:
```robotframework
Wait For And Click Element locator
Wait For And Click Text text
Wait Until Element Contains locator text
```
As well as additional features that have yet to be implemented in AppiumLibrary:
```robotframework
Drag and Drop source_locator target_locator
Drag And Drop By Offset locator x_offset y_offset
Scroll Down To Text text
Scroll Up To Text text
```
#### [Desktop Library](https://accruent.github.io/robotframework-applicationlibrary/DesktopLibraryDocumentation.html):
Also extends [AppiumLibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary) to tailor it Windows desktop automation. This includes enhancements to base keywords such as [Open Application](https://accruent.github.io/robotframework-applicationlibrary/DesktopLibraryDocumentation.html#Open%20Application) or [Click Element](https://accruent.github.io/robotframework-applicationlibrary/DesktopLibraryDocumentation.html#Click%20Element) to perform better for windows. Other notable additions include:
Start and Stop the WinAppDriver as needed (best used for suite setup/teardown):
```robotframework
Driver Setup
Driver Teardown
```
Easily switching to new windows or the desktop session:
```robotframework
Switch Application Desktop
Switch Application By Name remote_url new_window_name
```
A variety of keywords for controlling the mouse:
```robotframework
Mouse Over Element locator
Mouse Over and Click Element locator
Mouse over and Context Click Element locator
Mouse Over By Offset x_offset y_offset
```
Keywords for dragging and dropping:
```robotframework
Drag and Drop source_locator target_locator
Drag And Drop By Offset locator x_offset y_offset
```
The ability to send key commands to the application:
```robotframework
Send Keys \\ue00 p \\ue00
Send Keys To Element locator a b c
```
Selecting an element from a combobox or a menu:
```robotframework
Select Element From ComboBox combobox_locator element_locator
Select Elements From Menu locator_1 locator_2 locator_n
Select Elements From Context Menu locator_1 locator_2 locator_n
```
Selecting an element by an image file (Appium v1.18.0 and higher only):
```robotframework
Wait For And Click Element image=file.png
```
For WebView2 applications we can control both the application view and the Edge browser view:
<a target="_blank" rel="noopener noreferrer" href="https://user-images.githubusercontent.com/3010366/122806407-e4759700-d28f-11eb-8b72-779660606d9f.gif"><img src="https://user-images.githubusercontent.com/3010366/122806407-e4759700-d28f-11eb-8b72-779660606d9f.gif" alt="rbmzmun3cR" style="max-width:60%;"></a>
With the split from [RobotFramework-Zoomba](https://github.com/Accruent/robotframework-zoomba), the support for this exact example won't work in this current code. An example of this [can be found in the samples directory for robotframework-zoomba version 2.14.3 or lower](https://github.com/Accruent/robotframework-zoomba/blob/2.14.3/samples/WebView-DesktopTest.robot).
Getting Started
----------------
The Application library is easily installed using the [`setup.py`](https://github.com/Accruent/robotframework-applicationlibrary/blob/master/setup.py) file in the home directory.
Simply run the following command to install ApplicationLibrary and it's dependencies:
```python
pip install robotframework-applicationlibrary
```
If you decide to pull the repo locally to make contributions or just want to play around with the code
you can install ApplicationLibrary by running the following from the *root directory*:
```python
pip install .
```
or if you intend to run unit tests:
```python
pip install .[testing]
```
To access the keywords in the library simply add the following to your robot file settings (depending on what you are testing):
```python
*** Settings ***
Library ApplicationLibrary.MobileLibrary
Library ApplicationLibrary.DesktopLibrary
```
Additional Setup Information
---------------------------------
If you plan to run Mobile automation you will need to have a running appium server. To do so first have [Node](https://nodejs.org/en/download/)
installed and then run the following:
```python
npm install -g appium
appium
```
To use the `image` locator strategy you will need to install [opencv4nodejs](https://github.com/justadudewhohacks/opencv4nodejs) via the following command:
```python
npm install -g opencv4nodejs
```
Alternatively [Appium Desktop](https://github.com/appium/appium-desktop/releases) can be used.
For Windows automation we suggest [installing and using the WinAppDriver](https://github.com/Microsoft/WinAppDriver/releases) without Appium as it seems to be a bit faster and more stable.
Make sure to [enable developer mode on your system](https://www.howtogeek.com/292914/what-is-developer-mode-in-windows-10/#:~:text=How%20to%20Enable%20Developer%20Mode,be%20put%20into%20Developer%20Mode.) to allow the WinAppDriver to work.
Examples
------------
Example tests can be found in the [samples directory](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/samples).
The [test directory](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/test) may also contain tests but be aware that these are used for testing releases and may not be as straight forward to use as the ones in the [samples directory](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/samples).
Contributing
-----------------
To make contributions please refer to the [CONTRIBUTING](https://github.com/Accruent/robotframework-applicationlibrary/blob/master/CONTRIBUTING.rst) guidelines.
See the [.githooks](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/.githooks) directory for scripts to help in development.
Support
---------------
General Robot Framework questions should be directed to the [community forum](https://forum.robotframework.org/).
For questions and issues specific to ApplicationLibrary please create an [issue](https://github.com/Accruent/robotframework-applicationlibrary/issues) here on Github.
Raw data
{
"_id": null,
"home_page": "https://github.com/Accruent/robotframework-applicationlibrary",
"name": "robotframework-applicationlibrary",
"maintainer": "Brandon Wolfe, Neil Howell, Matt Bozek, Pinky Majhi",
"docs_url": null,
"requires_python": "",
"maintainer_email": "robosquad@accruent.com",
"keywords": "Robot Framework robot-framework selenium appium winappdriver appium robotframeworkdesktop windows zoomba python robotframework-library appium-windows appiumlibraryappium-mobile mobile applicationlibrary application app lib",
"author": "",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/9b/68/d3b5a29dd130a0eda1cf7c500174ca644c44394e1e98e6e54db99bba0a1f/robotframework-applicationlibrary-1.2.0.tar.gz",
"platform": "any",
"description": "robotframework-applicationlibrary\n===========\n[![PyPI version](https://badge.fury.io/py/robotframework-applicationlibrary.svg)](https://badge.fury.io/py/robotframework-applicationlibrary)\n[![Downloads](https://pepy.tech/badge/robotframework-applicationlibrary)](https://pepy.tech/project/robotframework-applicationlibrary)\n[![Build Status](https://github.com/Accruent/robotframework-applicationlibrary/workflows/tests/badge.svg?branch=master)](https://github.com/Accruent/robotframework-applicationlibrary/actions?query=workflow%3Atests)\n[![Coverage Status](https://coveralls.io/repos/github/Accruent/robotframework-applicationlibrary/badge.svg?branch=master)](https://coveralls.io/github/Accruent/robotframework-applicationlibrary?branch=master)\n[![CodeFactor](https://www.codefactor.io/repository/github/accruent/robotframework-applicationlibrary/badge)](https://www.codefactor.io/repository/github/accruent/robotframework-applicationlibrary)\n\nIntroduction\n--------------\n\nRobotframework-ApplicationLibrary is a collection of libraries spanning Mobile and Windows Desktop (WinAppDriver) automation using [Robot Framework](https://github.com/robotframework/robotframework).\nThese libraries are and extensions of the existing [AppiumLibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary). ApplicationLibrary extends the functionality \nof AppiumLibrary for Mobile app testing and adds support Windows desktop automation.\n\nIn the course of our own automation as a team, we found that out-of-the-box AppiumLibrary did not fit our needs for mobile testing and needed major rework inorder to get it working with WinAppDriver for Desktop testing.\nOriginally this code was a part of [RobotFramework-Zoomba](https://github.com/Accruent/robotframework-zoomba) but diverging dependency requirements lead to a need for two separate repositories.\n\nSee the **Keyword Documentation** for the [Mobile](https://accruent.github.io/robotframework-applicationlibrary/MobileLibraryDocumentation.html) or [Desktop](https://accruent.github.io/robotframework-applicationlibrary/DesktopLibraryDocumentation.html) libraries for more specific information about the functionality.\n\nExample tests can be found in the [samples directory](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/samples).\n\nSome Features of the Library\n--------------\n#### [Mobile Library](https://accruent.github.io/robotframework-applicationlibrary/MobileLibraryDocumentation.html):\nExtending the [AppiumLibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary) we added some quality of life 'Wait For And' type keywords:\n```robotframework\nWait For And Click Element locator\nWait For And Click Text text\nWait Until Element Contains locator text\n```\nAs well as additional features that have yet to be implemented in AppiumLibrary:\n```robotframework\nDrag and Drop source_locator target_locator\nDrag And Drop By Offset locator x_offset y_offset\nScroll Down To Text text\nScroll Up To Text text\n```\n\n#### [Desktop Library](https://accruent.github.io/robotframework-applicationlibrary/DesktopLibraryDocumentation.html):\nAlso extends [AppiumLibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary) to tailor it Windows desktop automation. This includes enhancements to base keywords such as [Open Application](https://accruent.github.io/robotframework-applicationlibrary/DesktopLibraryDocumentation.html#Open%20Application) or [Click Element](https://accruent.github.io/robotframework-applicationlibrary/DesktopLibraryDocumentation.html#Click%20Element) to perform better for windows. Other notable additions include:\n\nStart and Stop the WinAppDriver as needed (best used for suite setup/teardown):\n```robotframework\nDriver Setup\nDriver Teardown\n```\nEasily switching to new windows or the desktop session:\n```robotframework\nSwitch Application Desktop\nSwitch Application By Name remote_url new_window_name\n```\nA variety of keywords for controlling the mouse:\n```robotframework\nMouse Over Element locator\nMouse Over and Click Element locator\nMouse over and Context Click Element locator\nMouse Over By Offset x_offset y_offset\n```\nKeywords for dragging and dropping:\n```robotframework\nDrag and Drop source_locator target_locator\nDrag And Drop By Offset locator x_offset y_offset\n```\nThe ability to send key commands to the application:\n```robotframework\nSend Keys \\\\ue00 p \\\\ue00\nSend Keys To Element locator a b c\n```\nSelecting an element from a combobox or a menu:\n```robotframework\nSelect Element From ComboBox combobox_locator element_locator\nSelect Elements From Menu locator_1 locator_2 locator_n\nSelect Elements From Context Menu locator_1 locator_2 locator_n\n```\n\nSelecting an element by an image file (Appium v1.18.0 and higher only):\n```robotframework\nWait For And Click Element image=file.png\n```\n\nFor WebView2 applications we can control both the application view and the Edge browser view:\n\n<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://user-images.githubusercontent.com/3010366/122806407-e4759700-d28f-11eb-8b72-779660606d9f.gif\"><img src=\"https://user-images.githubusercontent.com/3010366/122806407-e4759700-d28f-11eb-8b72-779660606d9f.gif\" alt=\"rbmzmun3cR\" style=\"max-width:60%;\"></a>\n\nWith the split from [RobotFramework-Zoomba](https://github.com/Accruent/robotframework-zoomba), the support for this exact example won't work in this current code. An example of this [can be found in the samples directory for robotframework-zoomba version 2.14.3 or lower](https://github.com/Accruent/robotframework-zoomba/blob/2.14.3/samples/WebView-DesktopTest.robot).\n\nGetting Started\n----------------\n\nThe Application library is easily installed using the [`setup.py`](https://github.com/Accruent/robotframework-applicationlibrary/blob/master/setup.py) file in the home directory.\nSimply run the following command to install ApplicationLibrary and it's dependencies:\n\n```python\npip install robotframework-applicationlibrary\n```\n\nIf you decide to pull the repo locally to make contributions or just want to play around with the code\nyou can install ApplicationLibrary by running the following from the *root directory*:\n```python\npip install .\n```\n\nor if you intend to run unit tests:\n```python\npip install .[testing]\n```\n\nTo access the keywords in the library simply add the following to your robot file settings (depending on what you are testing):\n```python\n*** Settings ***\nLibrary ApplicationLibrary.MobileLibrary\nLibrary ApplicationLibrary.DesktopLibrary\n```\n\nAdditional Setup Information\n---------------------------------\n\nIf you plan to run Mobile automation you will need to have a running appium server. To do so first have [Node](https://nodejs.org/en/download/)\ninstalled and then run the following:\n```python\nnpm install -g appium\nappium\n```\n\nTo use the `image` locator strategy you will need to install [opencv4nodejs](https://github.com/justadudewhohacks/opencv4nodejs) via the following command:\n```python\nnpm install -g opencv4nodejs\n```\n\nAlternatively [Appium Desktop](https://github.com/appium/appium-desktop/releases) can be used.\n\nFor Windows automation we suggest [installing and using the WinAppDriver](https://github.com/Microsoft/WinAppDriver/releases) without Appium as it seems to be a bit faster and more stable.\n\nMake sure to [enable developer mode on your system](https://www.howtogeek.com/292914/what-is-developer-mode-in-windows-10/#:~:text=How%20to%20Enable%20Developer%20Mode,be%20put%20into%20Developer%20Mode.) to allow the WinAppDriver to work.\n\nExamples\n------------\nExample tests can be found in the [samples directory](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/samples).\n\nThe [test directory](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/test) may also contain tests but be aware that these are used for testing releases and may not be as straight forward to use as the ones in the [samples directory](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/samples).\n\n\nContributing\n-----------------\n\nTo make contributions please refer to the [CONTRIBUTING](https://github.com/Accruent/robotframework-applicationlibrary/blob/master/CONTRIBUTING.rst) guidelines.\n\nSee the [.githooks](https://github.com/Accruent/robotframework-applicationlibrary/tree/master/.githooks) directory for scripts to help in development. \n\nSupport\n---------------\nGeneral Robot Framework questions should be directed to the [community forum](https://forum.robotframework.org/).\n\nFor questions and issues specific to ApplicationLibrary please create an [issue](https://github.com/Accruent/robotframework-applicationlibrary/issues) here on Github.\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "Robot Framework framework for mobile and desktop testing.",
"version": "1.2.0",
"project_urls": {
"Homepage": "https://github.com/Accruent/robotframework-applicationlibrary"
},
"split_keywords": [
"robot",
"framework",
"robot-framework",
"selenium",
"appium",
"winappdriver",
"appium",
"robotframeworkdesktop",
"windows",
"zoomba",
"python",
"robotframework-library",
"appium-windows",
"appiumlibraryappium-mobile",
"mobile",
"applicationlibrary",
"application",
"app",
"lib"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "300b086c77a4ec3c9d9f971b54b031469ef868525e6b06fa5b16c8b7e722e9ee",
"md5": "ba19da7d7468e68f3d770bdc2fbd5a63",
"sha256": "9ecf88c05c5a9e775ac4180635a6d78d508efd37ec95ed56af75d64d40d7a4ae"
},
"downloads": -1,
"filename": "robotframework_applicationlibrary-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ba19da7d7468e68f3d770bdc2fbd5a63",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 26984,
"upload_time": "2023-06-12T19:44:32",
"upload_time_iso_8601": "2023-06-12T19:44:32.265579Z",
"url": "https://files.pythonhosted.org/packages/30/0b/086c77a4ec3c9d9f971b54b031469ef868525e6b06fa5b16c8b7e722e9ee/robotframework_applicationlibrary-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9b68d3b5a29dd130a0eda1cf7c500174ca644c44394e1e98e6e54db99bba0a1f",
"md5": "31a3a740fa3a57ae746a0dc85dc438bf",
"sha256": "6889ab0f0916371b28405de39a56bb32ccbc9cd499a7cd96c52e60fd07dd2dee"
},
"downloads": -1,
"filename": "robotframework-applicationlibrary-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "31a3a740fa3a57ae746a0dc85dc438bf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 27331,
"upload_time": "2023-06-12T19:44:33",
"upload_time_iso_8601": "2023-06-12T19:44:33.331519Z",
"url": "https://files.pythonhosted.org/packages/9b/68/d3b5a29dd130a0eda1cf7c500174ca644c44394e1e98e6e54db99bba0a1f/robotframework-applicationlibrary-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-12 19:44:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Accruent",
"github_project": "robotframework-applicationlibrary",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "robotframework-applicationlibrary"
}