Package: robotframework-testfors
ZoombaIntroductionZoomba is a collection of libraries spanning GUI, REST API, SOAP API, Mobile, and Windows Desktop automation usingRobot Framework.
These libraries are extensions of existing librariesSeleniumLibrary,Requests,SudsLibrary, andAppiumLibrary.Zoomba adds a significant amount of data validation support for REST and SOAP APIs, extends functionality for typical Web GUI automation, and
extends AppiumLibrary functionality to support Windows desktop automation.As a team beginning the journey of automation with Robot Framework - we found that there was some time spent ramping up our libraries and Zoomba aims to make that process easier for new projects.See theKeyword Documentationfor theAPI,SOAP,GUI,Mobile, orDesktoplibrary for more specific information about the functionality.Example tests can be found in thesamples directory.Some Features of the LibraryGUI Library:When working with web pages of varying load times you probably find yourself running a lot of calls like so:Wait Until Page Contains ElementlocatorClick ElementlocatorFor ease of use we have combined a lot of these into simple one line keywords:Wait For And Click ElementlocatorWait For And Click TexttextWait For And Select From Listlist_locatortarget_locatorAnother keyword that is particularly useful is for when you are waiting for javascript to complete on a page before proceeding:Wait For And Click Elementlocator that leads to a new page with javascriptWait Until Javascript Is CompleteWait For And Click ElementlocatorAPI Library:This library wraps therequests libraryso we have created a set of keywords to easily allow users to make requests in a single keyword:Call Get Request${headers_dictionary}endpointquery_stringCall Post Request${headers_dictionary}endpointquery_string${data_payload}After receiving your data we made it incredibly easy to validate it.Validate Response Contains Expected Responsetakes your received request and compares it to your expected data. If there are any errors found it will report line by line what they are.Validate Response Contains Expected Response${json_actual_response}${json_expected_response}If there is any mismatched data it will look something like this:Key(s) Did Not Match:
------------------
Key: pear
Expected: fish
Actual: bird
------------------
Full List Breakdown:
Expected: [{'apple': 'cat', 'banana': 'dog', 'pear': 'fish'}, {'apple': 'cat', 'banana': 'mice', 'pear': 'bird'}, {'apple': 'dog', 'banana': 'mice', 'pear': 'cat'}]
Actual: [{'apple': 'cat', 'banana': 'dog', 'pear': 'bird'}]

Please see differing value(s)If you wanted to ignore a key such as the 'update_date' you would simply set the 'ignored_keys' variable to that key or a list of keys:Validate Response Contains Expected Response${json_actual_response}${json_expected_response}ignored_keys=update_dateValidate Response Contains Expected Response${json_actual_response}${json_expected_response}ignored_keys=${list_of_keys}Mobile Library:Extending theAppiumLibrarywe again add some quality of life 'Wait For And' type keywords:Wait For And Click ElementlocatorWait For And Click TexttextWait Until Element ContainslocatortextThere are of course additional features that have yet to be implemented in AppiumLibrary:Drag and Dropsource_locatortarget_locatorDrag And Drop By Offsetlocatorx_offsety_offsetScroll Down To TexttextScroll Up To TexttextDesktop Library:Also extendsAppiumLibraryto tailor it Windows desktop automation. This includes enhancements to base keywords such asOpen ApplicationorClick Elementto perform better for windows. Other notable additions include:Easily switching to new windows or the desktop session:Switch ApplicationDesktopSwitch Application By Nameremote_urlnew_window_nameA variety of keywords for controlling the mouse:Mouse Over ElementlocatorMouse Over and Click ElementlocatorMouse over and Context Click ElementlocatorMouse Over By Offsetx_offsety_offsetKeywords for dragging and dropping:Drag and Dropsource_locatortarget_locatorDrag And Drop By Offsetlocatorx_offsety_offsetThe ability to send key commands to the application:Send Keys\\ue00p\\ue00Send Keys To ElementlocatorabcSelecting an element from a combobox:Select Element From ComboBoxcombobox_locatorelement_locatorGetting StartedThe Zoomba library is easily installed using thesetup.pyfile in the home directory.
Simply run the following command to install Zoomba and it's dependencies:pipinstallrobotframework-zoombaIf you decide to pull the repo locally to make contributions or just want to play around with the code
you can install Zoomba by running the following from theroot directory:pipinstall.To access the keywords in the library simply add the following to your robot file settings (depending on what you need):***Settings***LibraryZoomba.APILibraryLibraryZoomba.GUILibraryLibraryZoomba.SOAPLibraryLibraryZoomba.MobileLibraryLibraryZoomba.DesktopLibraryAdditional Setup InformationIf you plan to run Mobile or Windows desktop automation you will need to have a running appium server. To do so first haveNodeinstalled and then run the following:npminstall-gappiumappiumAlternativelyAppium Desktopcan be used.For Windows automation we suggestinstalling and using the WinAppDriverwithout Appium as it seems to be much more stable.ExamplesExample tests can be found in thesamples directory.Thetest directorymay 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 thesamples directory.ContributingTo make contributions please refer to theCONTRIBUTINGguidelines.Additionally if you run the following command new documentation will be generated on each commit :gitconfigcore.hooksPath.githooksSupportGeneral Robot Framework questions should be directed to thecommunity forum.Contact the team atrobosquad@accruent.comor create an issue with specific requests or questions regarding the Zoomba libraries!