Get elements of a view (UIAutomatorViewer)

This page concerns only measure on android device, if you want to measure on iPhone, you can follow this link:

https://greenspector.atlassian.net/wiki/spaces/DOCUMENTATION/pages/2808152065

1. Install UIAutomatorViewer

  • Install Android Studio if you don’t have it

  • Open Android Studio

  • Click on More Actions > SDK Manager (or Tools > SDK Manager if a project is open)

  • Click on the SDK tools tab, uncheck option "Hide Obsolete Packages"

  • Check option “Android SDK Tools” and install version 26.1.1

  • UIAutomatorViewer is now installed in Android SDK directory

  • Add UIAutomatorViewer to your path:

    • On Linux: add the line export PATH=$HOME/Android/Sdk/tools/bin:$PATH in the .bashrc file and run the command "source ~/.bashrc"

    • On Mac: add the line export PATH=$HOME/Library/Android/sdk/tools/bin:$PATH in the .bash_profile file and run the command "source ~/.bash_profile"

    • On Windows: Windows start menu > Settings > System > About > Advanced settings > Environment variables > Path > Modify > Add the path C:\Users\[username]\AppData\Local\Android\Sdk\tools\bin. Replace username by the name of the user.

UIAutomatorViewer needs Java 1.8 by default to work

 

2. Launch UIAutomatorViewer

Check your java version with the following command:

java -version

2.1. Launch UIAutomatorViewer without installing Java 1.8

If you use a Mac, please follow the next part.

To avoid installing a different version of Java, you could set environment variables for your PC profile:

 

Linux

Windows

 

Linux

Windows

ANDROID_HOME

Edit the ~/.bashrc file:

export ANDROID_HOME=$HOME/Android/Sdk

Windows start menu > Settings > System > About > Advanced settings > Environment variables > Path > Add:

C:\Users\[username]\AppData\Local\Android\Sdk

Replace username by the name of the user.

JAVA_HOME

Edit the ~/.bashrc file:

export JAVA_HOME=$HOME/android-studio/jbr

If jbr is not present (old version of Android Studio) replace it by jre.

Windows start menu > Settings > System > About > Advanced settings > Environment variables > Path > Add:

C:\Program Files\Android\Android Studio\jbr

If jbr is not present (old version of Android Studio) replace it by jre.

PATH

Edit the ~/.bashrc file:

export PATH=$JAVA_HOME/bin:$PATH

Windows start menu > Settings > System > About > Advanced settings > Environment variables > Path > Modify > Add the path:

$JAVA_HOME\bin

 

Example for Windows

After adding the variables, you can open a new terminal (this is important to open a new terminal to take into account the variables you have just set) and use the following command to open UIAutomatorViewer :

On Linux :

java -Xmx1600M -Dcom.android.uiautomator.bindir="$ANDROID_HOME/tools" -cp "$ANDROID_HOME/tools/lib/x86_64/swt.jar":"$ANDROID_HOME/tools/lib/*" com.android.uiautomator.UiAutomatorViewer

On Windows :

java -Xmx1600M -Dcom.android.uiautomator.bindir="%ANDROID_HOME%\tools" -cp "%ANDROID_HOME%\tools\lib\x86_64\swt.jar";"%ANDROID_HOME%\tools\lib\*" com.android.uiautomator.UiAutomatorViewer
  • The following program appears :

 

2.2. Launch UIAutomatorViewer with Java 1.8

Install Java 1.8:

  • On Linux, run the following commands:

  • On Mac with Intel chip, run the command below, add the line export PATH=/usr/local/opt/openjdk@8/bin:$PATH in the .bash_profile file and run the command "source ~/.bash_profile":

  • On Mac with Mac chip, run the commands below, add the line export PATH=/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/bin:$PATH in the .bash_profile file and run the command "source ~/.bash_profile"

  • On Windows, install Java 1.8 by getting it on the Oracle website. You need to create an account.

 

Launch UIAutomatorViewer:

  • On Linux and Mac, run the following command:

  • On Windows, run the following command:

 

The following program appears :

 

3. Use UIAutomatorviewer

When UIAutomatorViewer is opened, you can

  • Plug your usb on your smartphone

  • Click on button “Device screenshot”

  • A screen capture and a dump of view hierarchy appears on the screen

 

  • On screenshot (left), you can select the element for which you want to retrieve information and find it on the right:

 

  • In this case, the tab “Actu” have the field ‘text’ set with ‘Actu’. So in GDSL we can search the text Actu to find this tab (if there is no other element with the same text in the screen).

  • Each element of a view can be retrieve by field ‘text’, ‘resource-id’, ‘class’ or ‘content-desc’. GDSL commands are made to find an element by searching on this field

    • clickById,exampleid : click on an element which have exampleid in resource-id field

    • waitUntilText,Actu : Wait an element which have ‘Actu’ in text field