Appium Desktop – Find the correct ingredients for your automation salad.

If you have read our previous post, (and if you haven’t, I suggest you do so here), you will know that the combination of Cucumber and Appium can create a tool of great assistance for any QA engineer that is trying to bring his/her mobile testing to the world of automation. Now, after you have integrated this two crucial components altogether, there is one (or rather many) missing components in this salad, and those are the elements of the Mobile app that you are going to interact with.

This is where Appium Desktop comes into the scene. Since the release of Appium 1.6.4, a new GUI client has been released, with a fresh new interface that is still easy to use as its predecessor, and packs even more cool features than it did before. The first thing that comes to my mind is mentioning the added support for Linux, which didn’t exist with the previous client, and feels like an awesome addition that will allow many more programmers to easily look for the missing elements.

Continuing to the new interface, now upon launching Appium after installing it, you will notice there is only two fields for configuring your server, and a start button. On further inspection, you will notice another two tabs in this first screen, which allow for advanced options settings, and saving them as presets.

alt

alt

When you launch your server, this main screen will change and show you the logs of Appium, highlighting any Warnings or Errors with a small icon on the left. On the top right there are two new buttons, “Start new session” and “Stop Server”. The function of the latter is rather obvious, but the first button is the most interesting one. It will open a new window that allows us to build our own capabilities JSON from scratch, adding each and every field we might need, like the Platform, the Device Name, UDID, etc. The fantastic part about this, is that these capabilities can be saved and stored with convenient names for launching them again in the future with just a couple of clicks. With this addition, you can prepare yourself to launch Appium on many devices and simulators, and even different apps on them, with just a couple steps.
Once you are done setting your capabilities, you can launch the session while the server is running in the previous window, and Appium will take care of finding the device and app indicated in the JSON you created, and launch them.

alt alt alt

After the app launches successfully, the screen that you were looking at will now show you the reworked and fresh Appium Inspector, which covers the last missing step that we mentioned at the beginning of this article, finding the elements inside of your mobile app. On the left side of the screen, you will see a snapshot of the app, which has to be refreshed manually, but allows you to click on it to select the elements directly, instead of navigating the Xpath tree that you can appreciate in the middle panel. This tree allows for more precise selection and inspection, as trying to select the elements from the snapshot can be a bit tricky with overlapping elements.
Finally, on the right side of the screen, you will see the details of the elements you have currently selected, including the precious element ID (or Xpath if it’s not present) that you will use to map the element to your framework, and make your automation salad taste wonderful.

alt

One last detail that is very worth mentioning, is that Appium Desktop allows you to attach to a session that is currently running in another console. For doing this, you need to navigate to the “Attach to Session” tab in the Session Configuration window in which your created your capabilities. Upon arriving there, you have to specify the address and port of the Appium Server you want to attach to, and its Session ID. This is especially useful if you have configured a Framework that runs Appium on its own, but you still need to check up on some elements from time to time. This way you can easily hop in the running session and check for elements while your framework is running, or is waiting at a breakpoint.

alt