AppiumLibrary is an appium testing library for RobotFramework

Overview

Appium library for RobotFramework

Introduction

AppiumLibrary is an appium testing library for Robot Framework. Library can be downloaded from PyPI.

It uses Appium to communicate with Android and iOS application similar to how Selenium WebDriver talks to web browser.

It is supporting Python 3.7+ (since Appium Python Client doesn't support Python 2.7 anymore)

Latest PyPI version Number of PyPI downloads

Keyword Documentation

See Keyword Documentation for available keywords and more information about the library in general.

Installation

The recommended installation method is using pip:

pip install --upgrade robotframework-appiumlibrary

See Robot Framework installation instructions for detailed information about installing Python and Robot Framework itself.

Device Setup

After installing the library, you still need to setup an simulator/emulator or real device to use in tests. iOS and Android have separate paths to follow, and those steps better explained in Appium Driver Setup Guide. Please follow the Driver-Specific Setup according to platform.

Usage

To write tests with Robot Framework and AppiumLibrary, AppiumLibrary must be imported into your RF test suite. See Robot Framework User Guide for more information.

As it uses Appium make sure your Appium server is up and running. For how to use Appium please refer to Appium Documentation

When using Robot Framework, it is generally recommended to write tests easy to read/modify. The keywords provided in AppiumLibrary are pretty low level. It is thus typically a good idea to write tests using Robot Framework's higher level keywords that utilize AppiumLibrary keywords internally. This is illustrated by the following example where AppiumLibrary keywords like Input Text are primarily used by higher level keywords like Input Search Query.

*** Settings ***
Documentation  Simple example using AppiumLibrary
Library  AppiumLibrary

*** Variables ***
${ANDROID_AUTOMATION_NAME}    UIAutomator2
${ANDROID_APP}                ${CURDIR}/demoapp/ApiDemos-debug.apk
${ANDROID_PLATFORM_NAME}      Android
${ANDROID_PLATFORM_VERSION}   %{ANDROID_PLATFORM_VERSION=11}

*** Test Cases ***
Should send keys to search box and then check the value
  Open Test Application
  Input Search Query  Hello World!
  Submit Search
  Search Query Should Be Matching  Hello World!


*** Keywords ***
Open Test Application
  Open Application  http://127.0.0.1:4723/wd/hub  automationName=${ANDROID_AUTOMATION_NAME}
  ...  platformName=${ANDROID_PLATFORM_NAME}  platformVersion=${ANDROID_PLATFORM_VERSION}
  ...  app=${ANDROID_APP}  appPackage=io.appium.android.apis  appActivity=.app.SearchInvoke

Input Search Query
  [Arguments]  ${query}
  Input Text  txt_query_prefill  ${query}

Submit Search
  Click Element  btn_start_search

Search Query Should Be Matching
  [Arguments]  ${text}
  Wait Until Page Contains Element  android:id/search_src_text
  Element Text Should Be  android:id/search_src_text  ${text}

Create a file with the content above (name it: test_file.robot) and execute:

robot test_file.robot

The above example is single file test case, more examples can be found in a sample project that illustrates using Robot Framework and AppiumLibrary. Check the sample project that you can find examples of mobile web & ios & android.

Contributing

Fork the project, make a change, and send a pull request!

Project Contributors

AppiumLibrary is modeled after (and forked from) appiumandroidlibrary, but re-implemented to use appium 1.X technologies.

Comments
  • getting AppiumLibrary' failed: ImportError: No module named sauceclient after new install

    getting AppiumLibrary' failed: ImportError: No module named sauceclient after new install

    simple sudo pip install robotframework-appiumlibrary installation. When I try to run my test(s) I get this:

    [ ERROR ] Error in file '/Users/si-briancohen/jenkins_home/workspace/Sys_Integrity_Automation/consumer_mobile/resources/resources_mobile.robot': Importing test library 'AppiumLibrary' failed: ImportError: No module named sauceclient
    Traceback (most recent call last):
      File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/AppiumLibrary/__init__.py", line 4, in <module>
        from keywords import *
      File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/AppiumLibrary/keywords/__init__.py", line 5, in <module>
        from _element import _ElementKeywords
      File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/AppiumLibrary/keywords/_element.py", line 3, in <module>
        from appium.webdriver.common.touch_action import TouchAction
      File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/appium/__init__.py", line 18, in <module>
        from .saucetestcase import SauceTestCase
      File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/appium/saucetestcase.py", line 20, in <module>
        from sauceclient import SauceClient
    PYTHONPATH:
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/robot/libraries
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
      /usr/local/bin
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.9.7-py2.7.egg
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.4-py2.7.egg
      /usr/local/lib/python2.7/site-packages/setuptools-0.9.7-py2.7.egg
      /usr/local/lib/python2.7/site-packages/pip-1.4-py2.7.egg
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python27.zip
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old
      /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload
      /Library/Python/2.7/site-packages
      /usr/local/lib/python2.7/site-packages
    
    opened by bcohen44 23
  • Upgrade to selenium 4 and python-client v2

    Upgrade to selenium 4 and python-client v2

    Implements

    Selenium Version 4 support and relative fixes for python-client

    ToDO

    • [x] Deprecate TouchAction
    • [x] Fix Launch App
    • [x] Deprecate launch_app, close_app, reset_app
    • [x] Fix documentation
    • [x] strict_ssl = false option to open_application
    • [x] Beta build
    • [x] Support for arguments in Execute Script
    • [x] Added new ActionHelper#tap method, refer to Tap With Positions
    • [x] Support for AppiumBy methods, and replacing find_element_by*
    • [x] Added support for Espresso locators
    • [x] iOS Test by Community
    • [x] Android Test by Community
    • [ ] Check locator strategies not to use find_elements for when ask is single element

    ❗️ Please test the beta build here ❗️ pip install robotframework-appiumlibrary==2.0.0b5

    new feature 
    opened by serhatbolsu 17
  • Need appium library to be updated to latest selenium 4.

    Need appium library to be updated to latest selenium 4.

    Hello

    As you know python is released to 3.10.4 version, and selenium to version 4. Could you please update the appium library which has selenium binding to older version.

    Problem is, when I install appium, it replaces the new version of selenium to older. That's a big problem.

    As I am using web+Mobile application automation together with robot framework 🤖.

    Could you please give a solution to this. It would be very kind of you.

    opened by rajeevpramanik 13
  • How to handling iOS system alerts with Appiumlibrary

    How to handling iOS system alerts with Appiumlibrary

    [XCUITest] The capabilities 'autoAcceptAlerts' and 'autoDismissAlerts' do not work for XCUITest-based tests. Please adjust your alert handling accordingly.

    'autoAcceptAlerts' does not useful. Is there any where to handle the alerts by appiumlibrary?

    I try to use the keyword "wait until page content element" for waiting the button of alerts by accessibility_id but it doesn't find element.(it show the alerts on phone)

    tsk for any help

    opened by shen4549 13
  • The keyword

    The keyword "Switch Application"

    Hi I use the keyword "Switch Application" and follow the example:

    ${appium1}= Open Application http://localhost:4723/wd/hub alias=MyApp1 platformName=Android platformVersion=6.0 deviceName='' app=C:/XXXX/app1.apk ${appium2}= Open Application http://localhost:4725/wd/hub alias=MyApp2 platformName=Android platformVersion=6.0 deviceName='' app=C:/XXXX/app2.apk Capture Page Screenshot Checkit0.jpg Switch Application ${appium1} Capture Page Screenshot Checkit1.jpg Sleep 3s

    After execute "Switch Application" and execute "Capture Page Screenshot".

    The log return " Keyword 'Capture Page Screenshot' could not be run on failure: KeyError: 'error' "

    What's wrong with my usage?

    I'll appreciate any help!

    Thanks!

    bug help wanted 
    opened by BabauHo 13
  • Execute script do not have arguments

    Execute script do not have arguments

    I'm try to execute script when test native mobile app. On Python I do it:

    ${searchAction}  create dictionary  action  search
    execute script  mobile:performEditorAction  ${searchAction}
    

    But I got the error message: Keyword 'AppiumLibrary.Execute Script' expected 1 argument, got 2.

    I see that in the applicationmanager file:

    def execute_script(self, script):
            """
            Inject a snippet of JavaScript into the page for execution in the
            context of the currently selected frame (Web context only).
    
            The executed script is assumed to be synchronous and the result
            of evaluating the script is returned to the client.
    
            New in AppiumLibrary 1.5
            """
    
            return self._current_application().execute_script(script)
    

    So, How do I execute script with arguments?

    need_attention 
    opened by sinhpn92 11
  • Fix the click element if locator is a WebElement instance

    Fix the click element if locator is a WebElement instance

    _element_find function should return just an element if caller need an element

    image

    This function was broken by the commit 9f430aca5f2932cf201f026f85c7d9353f3a3f82

    question 
    opened by idxn 11
  • Add the possibility to embed screenshots in log.html as base64 content

    Add the possibility to embed screenshots in log.html as base64 content

    Here is a first step regarding issue #318

    Implements

    Add the possibility to set the parameter filename of capture_page_screenshot to "EMBED" in order to embed all screenshots directly as base64 content into the html log.

    Fixing

    #318

    I have tested it in a real robotframework test project and it looks fine. If you are fine with that I think I could go a step further and handle a global parameter at library loading (as SeleniumLibrary is doing, have a look at https://github.com/robotframework/SeleniumLibrary/blob/master/src/SeleniumLibrary/keywords/screenshot.py)

    opened by arnaudruffin 9
  • machine without internet connection installation error distutils.errors.DistutilsError

    machine without internet connection installation error distutils.errors.DistutilsError

    I want to install RF offline due to my machine does not has internet connect. error on running.

    C:\installers\RobotFramework for Pycharm\robotframework-appiumlibrary-master\robotframework-appiumlibrary-master>python setup.py install

    WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001ECDFB58DC0>: Failed to establish

    a new connection: [Errno 11001] getaddrinfo failed')': /simple/pytest-runner/

    WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001ECDFB58E20>: Failed to establish

    a new connection: [Errno 11001] getaddrinfo failed')': /simple/pytest-runner/

    WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001ECDFB1F4F0>: Failed to establish

    a new connection: [Errno 11001] getaddrinfo failed')': /simple/pytest-runner/

    WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001ECDFB1FF70>: Failed to establish

    a new connection: [Errno 11001] getaddrinfo failed')': /simple/pytest-runner/

    WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001ECDFB1FFA0>: Failed to establish

    a new connection: [Errno 11001] getaddrinfo failed')': /simple/pytest-runner/

    ERROR: Could not find a version that satisfies the requirement pytest-runner (from versions: none)

    ERROR: No matching distribution found for pytest-runner

    Traceback (most recent call last):

    File "C:\Program Files\Anaconda3\lib\site-packages\setuptools\installer.py", line 126, in fetch_build_egg

    subprocess.check_call(cmd)
    

    File "C:\Program Files\Anaconda3\lib\subprocess.py", line 364, in check_call

    raise CalledProcessError(retcode, cmd)
    

    subprocess.CalledProcessError: Command '['C:\Program Files\Anaconda3\python.exe', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', 'C:\Users\SIPO-T~1\AppData\Local\Temp\tmp07l_7y6g', '--quiet', 'pytest-r

    unner']' returned non-zero exit status 1.

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):

    File "setup.py", line 11, in

    setup(name='robotframework-appiumlibrary',
    

    File "C:\Program Files\Anaconda3\lib\site-packages\setuptools_init_.py", line 152, in setup

    _install_setup_requires(attrs)
    

    File "C:\Program Files\Anaconda3\lib\site-packages\setuptools_init_.py", line 147, in _install_setup_requires

    dist.fetch_build_eggs(dist.setup_requires)
    

    File "C:\Program Files\Anaconda3\lib\site-packages\setuptools\dist.py", line 673, in fetch_build_eggs

    resolved_dists = pkg_resources.working_set.resolve(
    

    File "C:\Program Files\Anaconda3\lib\site-packages\pkg_resources_init_.py", line 764, in resolve

    dist = best[req.key] = env.best_match(
    

    File "C:\Program Files\Anaconda3\lib\site-packages\pkg_resources_init_.py", line 1049, in best_match

    return self.obtain(req, installer)
    

    File "C:\Program Files\Anaconda3\lib\site-packages\pkg_resources_init_.py", line 1061, in obtain

    return installer(requirement)
    

    File "C:\Program Files\Anaconda3\lib\site-packages\setuptools\dist.py", line 732, in fetch_build_egg

    return fetch_build_egg(self, req)
    

    File "C:\Program Files\Anaconda3\lib\site-packages\setuptools\installer.py", line 128, in fetch_build_egg

    raise DistutilsError(str(e)) from e
    

    distutils.errors.DistutilsError: Command '['C:\Program Files\Anaconda3\python.exe', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', 'C:\Users\SIPO-T~1\AppData\Local\Temp\tmp07l_7y6g', '--quiet', 'pytest

    -runner']' returned non-zero exit status 1.

    opened by lovelyplanet2019 9
  • Scroll , Swipe  Method has not been implemented for appium library

    Scroll , Swipe Method has not been implemented for appium library

    I am using scroll method with robot framework appium library and getting the exception as follows

    WebDriverException: Message: Method has not yet been implemented

    appium Library Version : 1.4.6

    opened by bhajojo 9
  • KeyError: 'desired'

    KeyError: 'desired'

    The error is raised in _applicationmanagement.py##_get_platform

    platformName = self._current_application().desired_capabilities['desired']['platformName']

    In my side, there is no 'desired' key.

    fixed when I remove 'desired'

    platformName = self._current_application().desired_capabilities['platformName']


    Appium ver: 1.6 Robotframework: 3.0 Robotframework_AppiumLibrary: 1.4.1

    robot test Click Element xpath=//XCUIElementTypeStaticText[@label='${catalog}']

    dump self._current_application().desired_capabilities

    {'udid': '', 'platformVersion': '9.3', 'app': '/Users/skyer/Documents/projects/droi/DroiBaaSTest-iOS/build/Build/Products/Release-iphonesimulator/DroiBaaSTest-iOS.app', 'platform': 'iOS', 'javascriptEnabled': True, 'automationName': 'XCUITest', 'databaseEnabled': False, 'webStorageEnabled': False, 'browserName': '', 'takesScreenshot': True, 'networkConnectionEnabled': False, 'platformName': 'iOS', 'deviceName': 'iPhone 5s', 'noReset': 'true', 'locationContextEnabled': False}
    
    bug 
    opened by DroiSDK 9
  • Can we have something similar as

    Can we have something similar as "Set Selenium Speed" in our Appium Library

    Currently, in our Selenium Library, we have a keyword "Set Selenium Speed" for setting delay after each Selenium command. This helps lot when we running the tests in CI. Can we have the same for our Appium Library as well?

    opened by balakumaran-deriv 0
  • Can't return JS script results from iOS device (work with android)

    Can't return JS script results from iOS device (work with android)

    Hi,

    To test a webview based mobile application, I try to execute js command with keyword "Execute Script driver:return testing.module.getMyData();"

    With Android Device I return correctly my liste of data but with iOS device, return seems doesn't work.

    I don't understand why.

    opened by PatocheCS 1
  • Press side Button for iPhone is not implemented

    Press side Button for iPhone is not implemented

    Execute Scripte mobile: pressButton name=buttonName This keyword is actually supporting only "home" , "volumeup" and "volumedown" buttons on appium library v2.0.0 we need to update this function to support also side button for iPhone

    opened by ZBR92 1
  •  Can't find the element using id but working fine with xpath

    Can't find the element using id but working fine with xpath

    I am trying to find one element using id=search_icon, it is giving me no element found, but when I am using this xpath=//*[@resource-id=‘search_icon’], it is working fine. What could be the possible issue here? This is a react native app.

    image

    image

    opened by zaid0080 4
  • [iOS 15.5][Appium 1.22.3] :

    [iOS 15.5][Appium 1.22.3] : "Launch Application" , "Quit Application" , and "Go Back" keywords are not having any effect on mobile phone

    XCode version: 13.4.1 Appium version: 1.22.3 robotframework-appiumlibrary version: 1.6.3 Appium-Python-Client: 1.3.0 iPhone and iOS: iPhone 8 and iOS 15.5

    Launch Application and Quit Application keywords are getting executed successfully but these keyword's effect is no more seen on the mobile phone with the above environment setup

    On appium version <= 1.21.0, Launch Application and Quit Application keywords are working as expected.

    Go Back keyword is also not working !

    I want to "Relaunch" my iOS app, Is there any other way that can be performed and can be integrated with Robot Framework script ?

    Suggestion:

    • All python-appium library keywords should be accessible by robotframework-appium library keywords (For ex. "Terminate App" and "Launch App" combination resolves my issue for relaunching by "Terminate App" keyword is not available in robotframework-appium)
    • "Appium" and "robotframework-appiumlibrary" should be sync for future releases / updates for hassle-free usage

    Note - Above mentioned keywords are working as expected for Android platform. Seems like there might issue between XCode and Appium v1.22.3 (As this bridge is only having the issue, maybe both are not compatible with each other)

    Same question I have asked in Stack Overflow - Link

    Thanks in advance.

    opened by nidit-mehta 1
  • Importing library 'Appiumlibrary' failed: ModuleNotFoundError: No module named 'Appiumlibrary'

    Importing library 'Appiumlibrary' failed: ModuleNotFoundError: No module named 'Appiumlibrary'

    Hi everyone,

    I have been trying to use Appiumlibrary to run automated testing on Android Simulator; However, When I run the code VScode run an error message as below:

    Exception has occurred. Suspended due to logged error: Error in file '/Users/nattawutkreangkraileard/Desktop/Mobiletest/tasks.robot' on line 2: Importing library 'Appiumlibrary' failed: ModuleNotFoundError: No module named 'Appiumlibrary' Traceback (most recent call last): None PYTHONPATH: /Users/nattawutkreangkraileard/.vscode/extensions/robocorp.robotframework-lsp-0.46.0/src/robotframework_debug_adapter /Users/nattawutkreangkraileard/Desktop/Mobiletest /Users/nattawutkreangkraileard/.vscode/extensions/robocorp.robotframework-lsp-0.46.0/src /Users/nattawutkreangkraileard/.vscode/extensions/robocorp.robotframework-lsp-0.46.0/src/robotframework_ls/vendored /Users/nattawutkreangkraileard/.robocorp/holotree/b1f3c244e_0041a488/lib/python38.zip /Users/nattawutkreangkraileard/.robocorp/holotree/b1f3c244e_0041a488/lib/python3.8 /Users/nattawutkreangkraileard/.robocorp/holotree/b1f3c244e_0041a488/lib/python3.8/lib-dynload /Users/nattawutkreangkraileard/.robocorp/holotree/b1f3c244e_0041a488/lib/python3.8/site-packages

    This is my code: `*** Settings *** Library Appiumlibrary

    *** Test Cases *** Open Test Application For Android Open Test Application

    *** Keywords *** Open Test Application Open Application remote_url=http://localhost:4723/wd/hub ... deviceName=Test Device ... platformVersion=11.0 ... platformName=Android ... appPackage=com.material.components ... appActivity=com.material.components.activity.MainMenu `

    Kindly advise How to fix this error.

    Great thanks!

    K.Nattawut

    opened by asknattawut 2
Releases(2.0.0)
  • 2.0.0(Nov 1, 2022)

    Selenium 4 Support with python-client v2.0.0

    • Deprecate the TouchAction keywords
    • Deprecate launch_application, quit_application, reset_application according to Appium Python Client
    • Rename Activate App to Activate Application for consistency
    • Rename Background App to Background Application for consistency
    • Rename Stop App to Stop Application for consistency
    • Rename Remove App to Remove Application for consistency
    • Added Terminate Application
    • Support for strict_ssl added in Open Application
    • Support for arguments(dict) with Execute Script and Execute Async Script
    • Added Tap With Positions that uses new ActionChain of w3c
    • Espresso selector support (viewtag, data matcher, view matcher)
    • Fix all find_element_by to find_element using AppiumBy

    What's Changed

    • Adding new keyword adb command timeout by @felipetortella in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/328
    • Add the possibility to embed screenshots in log.html as base64 content by @arnaudruffin in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/332
    • Support applications with multiple webviews. Add scrolling to the visible webview. by @matthew-dahm in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/329
    • Version bump by @sadikkuzu in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/345
    • Fix for #352 by @js361014 in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/353
    • Added file deleting support for Android by @js361014 in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/354
    • Added get_element_rect by @js361014 in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/356
    • Added app activation by @js361014 in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/359
    • Added remove app by @js361014 in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/361
    • Added stopping app by @js361014 in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/360

    New Contributors

    • @felipetortella made their first contribution in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/328
    • @arnaudruffin made their first contribution in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/332
    • @matthew-dahm made their first contribution in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/329
    • @sadikkuzu made their first contribution in https://github.com/serhatbolsu/robotframework-appiumlibrary/pull/345

    Full Changelog: https://github.com/serhatbolsu/robotframework-appiumlibrary/compare/1.6.3...2.0.0

    Source code(tar.gz)
    Source code(zip)
  • 1.6.3(Sep 18, 2021)

  • 1.6(May 4, 2021)

    • Sample code
    • Documentation update on how to start
    • Execute Adb Shell - new keyword added
    • Screen record - new keyword added
    • Is Keyboard Shown - new keyword added
    • (iOS) Chain - locator added
    • (iOS) Tab multiple times - new keyword added
    • (Android) Open Notifications - new keyword added
    Source code(tar.gz)
    Source code(zip)
  • v1.5(Nov 19, 2018)

    • iOS predicates selector - new locator strategy
    • Execute Sync/Async Script in Web context - new keyword added
    • Long press has time parameter now
    • Added log-level filter for reporting
    • Set Location Keyword - new keyword added
    • Appium-Python library min-version bump
    • Simulate Touch ID on iOS Simulator
    Source code(tar.gz)
    Source code(zip)
  • v1.4.6(Nov 19, 2018)

    • Some of the best practices uses a way not to open/close webdriver session on every test case. Releasing support to Launch/Quit application while keeping the webdriver session open. Refer to keyword documentation for an example. Since Open Application / Close Application are used keyword naming, Launch / Quit are used
    • Unicode support required improvements as Appium has done some changes on iOS side.

    New Keywords:

    | Keyword | Argument1 | | --- | --- | | Launch Application | | Quit Application |

    Source code(tar.gz)
    Source code(zip)
  • v1.4.5(Aug 4, 2017)

    • Not visible element and text should be able to return error, this will be possible with new added keywords.
    • Each device has different pixel rations which also effects test case script for pixels not being reliable. Swipe By Percent will handle swipes without requiring pixels.

    New Keywords:

    | Keyword | Argument1 | Argument2 | Argument3 | Argument4 | | --- | --- | --- | --- | --- | | Swipe By Percent | x_percent | y_percent | x_end_percent | y_end_percent | | Element Should Be Visible | locator | | Text Should Be Visible | text | | Get Window Height | | Get Window Width |

    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Oct 27, 2016)

    • Unicode better support

    Appium shortcomings cause testing challenges with unicode characters or non-english apps. Each platform have different implementation underlying so their behaviour is different. While Android can handle unicode characters inside xpath, iOS can not. Unicode normalization used in order to make everything work without hassle.

    • Unicode supported now inside xpath text. example:
    Click Element  //*[@name="öışğ"]
    Input Text  //*[contains(@text, "ışüğ")] 
    
    • Click Text iOS handling is much better now. Works regardless if text is name, value or label example:
    Click Text  SignUp
    

    This will first check if name does match, if not it will check value or label. But this is just logic underlying.

    Please do not hesitate to open issues

    Source code(tar.gz)
    Source code(zip)
  • v1.4(Oct 12, 2016)

    Important new features and compatibility features with Selenium added in this release

    Selectors now takes id and xpath as default so you do not need to specify if you are using id or xpath (which starts with //) . Also you can now use WebElement in addition to other locators. Existing test cases will not be effected, no change is required 👍

    • New finding elements strategy now supports directly using WebElement. Check keyword documentation for more information.
    • Added default locator strategies. Default is: id and xpath check library introduction for more details.
    • Click Text added as keyword in which you can directly click on found texts. Underlying it works on predefined xpath depending on platform.
    • Unicode fixes also reflected on Page Should Contain Text and Page Should Not Contain Text
    • Getting an element text is added and its helper keywords.

    New Keywords:

    | Keyword | Argument1 | Argument2 | | --- | --- | --- | | Get Text | locator | | | Click Text | text | exact_match | | Element should contain text | locator | text | | Element should not contain text | locator | text | | Element text should be | locator | text | | Get Matching Xpath Count | xpath_locator | | | Xpath Should Match X Times | xpath_locator | count |

    Name Change: (Breaking Change) Get Element -> Get Webelement Get Elements -> Get Webelements

    Source distribution is available at PyPI and pip users can simply run:

    # to install or upgrade to the latest release.
    pip install --upgrade robotframework-appiumlibrary
    
    Source code(tar.gz)
    Source code(zip)
  • 1.3.7(Aug 29, 2016)

  • v1.4-dev1(Sep 1, 2016)

    Important new features and compatibility features with Selenium added in this release

    Selectors now takes id as default so you do not need to specify if you are using id . Also you can now use WebElement in addition to other locators.

    • New finding elements strategy now supports directly using WebElement. Check keyword documentation for more information.
    • (not-implemented-yet)Added default locator strategies. Default is: id which actually means : accessibility_id
    • Unicode fixes also reflected on Page Should Contain Text and Page Should Not Contain Text

    Source distribution is available at PyPI and pip users can simply run pip install --pre --upgrade robotframework-appiumlibrary to install or upgrade to the latest pre-release.

    If you would like to return to release version, run: pip uninstall robotframework-appiumlibrary and install again: `pip install robotframework-appiumlibrary``

    Please help with bugs and feature requests.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.5(Feb 12, 2015)

    • Droid Utils: new file/folder handling methods <https://github.com/jollychang/robotframework-appiumlibrary/pull/31>_
    • Hide Keyboard for Android
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Dec 12, 2014)

  • 1.1.0(Dec 11, 2014)

  • 1.0.20(Dec 5, 2014)

    1.0.20

    • send desired capabilities to saucelabs <https://github.com/jollychang/robotframework-appiumlibrary/issues/20>_ _ Added desired Capability newCommandTimeout <https://github.com/jollychang/robotframework-appiumlibrary/pull/19>_

    1.0.19

    • Open Application Keyword udid argument issues <https://github.com/jollychang/robotframework-appiumlibrary/pull/17>_
    • Update Wait Until Page Contains Element Keyword documentation <https://github.com/jollychang/robotframework-appiumlibrary/pull/16>_

    1.0.18

    • added tap functionality to keyword by shadeimi <https://github.com/jollychang/robotframework-appiumlibrary/pull/14>_
    • Support for multiple appium connections by yahman72 <https://github.com/jollychang/robotframework-appiumlibrary/pull/13>_

    1.0.17

    • support app_wait_package and app_wait_activity

    1.0.16

    • add udid and bundleid
    • add background_app
    • fix Resetting an application
    Source code(tar.gz)
    Source code(zip)
Owner
Serhat Bolsu
Serhat Bolsu
Switchboard - easy and super light weight A/B testing for your mobile iPhone or android app. This mobile A/B testing framework allows you with minimal servers to run large amounts of mobile users.

Switchboard - easy A/B testing for your mobile app What it does Switchboard is a simple way to remote control your mobile application even after you'v

Keepsafe 287 Nov 19, 2022
Testing the UI without UI Testing, a Swift experiment.

UI tests without UI Testing experiment This repo is a small experiment to see if there's an "in-between" for testing iOS applications. More feature-le

Joe Masilotti 20 Sep 26, 2022
A Mac and iOS Playgrounds Unit Testing library based on Nimble.

Spry Spry is a Swift Playgrounds Unit Testing library based on Nimble. The best thing about Spry is that the API matches Nimble perfectly. Which means

Quick 327 Jul 24, 2022
Network testing for Swift

DVR DVR is a simple Swift framework for making fake NSURLSession requests for iOS, watchOS, and OS X based on VCR. Easy dependency injection is the ma

Venmo 650 Nov 3, 2022
The Swift (and Objective-C) testing framework.

Quick is a behavior-driven development framework for Swift and Objective-C. Inspired by RSpec, Specta, and Ginkgo. // Swift import Quick import Nimbl

Quick 9.6k Dec 31, 2022
Snapshot testing tool for iOS and tvOS

SnapshotTest is a simple view testing tool written completely in Swift to aid with development for Apple platforms. It's like unit testing for views.

Pär Strindevall 44 Sep 29, 2022
UI Testing Cheat Sheet and Examples.

UI Testing Cheat Sheet This repository is complementary code for my post, UI Testing Cheat Sheet and Examples. The post goes into more detail with exa

Joe Masilotti 2.1k Dec 25, 2022
Mockingbird was designed to simplify software testing, by easily mocking any system using HTTP/HTTPS

Mockingbird Mockingbird was designed to simplify software testing, by easily mocking any system using HTTP/HTTPS, allowing a team to test and develop

FARFETCH 183 Dec 24, 2022
Automatic testing of your Pull Requests on GitHub and BitBucket using Xcode Server. Keep your team productive and safe. Get up and running in minutes. @buildasaur

Buildasaur Automatic testing of your Pull Requests on GitHub and BitBucket using Xcode Server. Keep your team productive and safe. Get up and running

Buildasaurs 774 Dec 11, 2022
Fastbot is a model-based testing tool for modeling GUI transitions to discover app stability problems

Fastbot is a model-based testing tool for modeling GUI transitions to discover app stability problems. It combines machine learning and reinforcement learning techniques to assist discovery in a more intelligent way.

Bytedance Inc. 446 Dec 29, 2022
Implementing and testing In-App Purchases with StoreKit2 in Xcode 13, Swift 5.5 and iOS 15.

StoreHelper Demo Implementing and testing In-App Purchases with StoreKit2 in Xcode 13, Swift 5.5, iOS 15. See also In-App Purchases with Xcode 12 and

Russell Archer 192 Dec 17, 2022
Genything is a framework for random testing of a program properties.

Genything is a framework for random testing of a program properties. It provides way to random data based on simple and complex types.

Just Eat Takeaway.com 25 Jun 13, 2022
For Testing APIs of NYTimes

NYTimes-APIs For Testing APIs of NYTimes Mark Dennis Diwa ?? To run the app: Open terminal first then run pod install. Open workspace. Run the app on

Mark Dennis Diwa 0 Nov 23, 2021
Multivariate & A/B Testing for iOS and Mac

This library is no longer being maintained. You can continue to use SkyLab in your projects, but we recommend switching another solution whenever you

Mattt 792 Dec 15, 2022
Remote configuration and A/B Testing framework for iOS

MSActiveConfig v1.0.1 Remote configuration and A/B Testing framework for iOS. Documentation available online. MSActiveConfig at a glance One of the bi

Elevate 78 Jan 13, 2021
AB testing framework for iOS

ABKit Split Testing for Swift. ABKit is a library for implementing a simple Split Test that: Doesn't require an HTTP client written in Pure Swift Inst

Recruit Marketing Partners Co.,Ltd 113 Nov 11, 2022
Keep It Functional - An iOS Functional Testing Framework

IMPORTANT! Even though KIF is used to test your UI, you need to add it to your Unit Test target, not your UI Test target. The magic of KIF is that it

KIF Framework 6.2k Dec 29, 2022
An understated approach to iOS integration testing.

Subliminal is a framework for writing iOS integration tests. Subliminal provides a familiar OCUnit/XCTest-like interface to Apple's UIAutomation frame

Inkling 762 Nov 8, 2022
Control your iPhone from inside Xcode for end-to-end testing.

Remote - Control your iPhone from Xcode "Remote" is a plugin for Xcode that allows you to control an iPhone from a window on your Mac during developme

John Holdsworth 791 Dec 26, 2022