Search code examples
androidseleniumtestingautomationuielement

How can I get IDs, names or x paths for ui elements used in a mobile app (Android/iOS) for mobile automation testing?


I want to know how can I get IDs or names of UI elements used in a mobile application that are used in mobile automation testing like appium, monkey-talk, xamarian etc.


Solution

  • What I explain is for my system (Windows 7), but my explanations should be easily translateable to other systems too.

    Prerequisites:

    • When you want to do Android automation testing you should always install Android SDK, so I assume that you have already done so. Lets call the path to the sdk folder <ANDROID_HOME> (including the sdk folder itself)
    • Run <ANDROID_HOME>/SDK Manager.exe. Select the latest Android SDK Tools and Android SDK Platform-tools and install them
    • Connect a device you want to test on:
      • Either run an emulator - it is automatically connected in your system
      • Or connect a physical device and install the proper USB drivers. You cna verify the device is connected with running the command <ANDROID_HOME/platform-tools/adb.exe devices - if there is at least one device in the list you are good to go.

    Once you have all that:

    Run <ANDROID_HOME>/tools/uiautomatorviewer.bat. this will open a screen that allows you to take screenshots of the conencted device. See below image:

    enter image description here

    The screenshot is taken via clicking the button under the purple rectangle, whcih I added artificially. The red one is added by the tool, because I hover the element of interest. You can observe the elements properties on the right. These are usually the properties you would use for testing native application.

    If you want to test elements that are loaded in WebView then it would be better if you use Chrome remote debugging for obtaining the correct selectors.


    Footnote:

    As I see you are making the very first steps in mobile automation testing, which is an area I am pretty interested into, may I suggest you take a look at the ATMOSPHERE Android test automation framework. Disclaimer: I am one of its creators. Still - it is freely available and open sourced. We also beleive it provides capabilities not supported in other frameworks and is easy to start with so I hope it will be useful for you!