11 Tips and Tricks For Appium and Selenium

Selenium and Appium are two well-known automation testing tools. Selenium is largely leveraged for testing web applications whereas Appium is widely used for testing mobile applications. Bundled with many features, both these tools are highly recommended for software testing.
But you need to have a proper understanding of these appium and selenium tools to get best out of them.  There are few tips and tricks that can help you get best out these tools and leverage them to their best abilities.
Let’s make our job easier with these veteran Tips and Tricks about Appium and Selenium.

The Use of Waits: 

Using Thread.Sleep() is a common method of “waiting” while any processing is going on. But it possesses a few drawbacks. Here is how we can overcome it.
a)    WebDriverWait.  It census your query every 500ms, and return when the wait condition is fulfilled. WebDriverWait can explicitly put a maximum threshold to elude locks and infinite waiting.
b)    FindElementBy / FindElement(..): Second method is by invoking FindElementBy or just FindElement(..). FindElementBy waits until the element is found and returns null if maximum wait time passes. But be sure you have to explicitly configure the implicitly waits.
1. Locating Elements
Locating element is not a tough job in selenium and there are many ways to do it. But the haunting part is getting StaleElementReferenceException.
It happens when you assign IWebElement reference but it already has some other location in the DOM. The solution to StaleElementReferenceException is to re-query and reassign the element reference.
2. Sending Keyboard input
Selenium allows sending inputs in two ways. First is by setting “value” property of editable elements by using ExecuteScript() / ExecuteAsyncScript(). Second is to use SendKeys() API.
I would suggest you use ExecuteScript() / ExecuteAsyncScript() method when you are more concerned about filling in a few fields and when you are not concerned about DOM events being fired and concurrent character-by-character verification.
But if you want to focus on real-time validation, the second method i.e. using SendKeys() API will be more apt for you.
3. Executing JavaScript code
You can execute JavaScript in either of the below-given ways depending upon your requirements.
i)    ExecuteScript().ExecuteScript() does not execute the next line of         test code till script execution is returned.
ii)    ExecuteAsyncScript() does not block your test code.
4. Drag & Drop Interfaces
Action Builder API, and the “DragAndDrop” and “DragAndDropToOffset” methods support easy drag and drop interface in Selenium.
5. Switching between windows and iframes
You can easily switch between windows and frames in Selenium.

  1. For iFrames

driver.SwitchTo().Frame(frameElement); //IWebElement

  1. For Windows

driver.SwitchTo().Window(handle);// driver window handle
and then can switch back to the original window by using

  1. Using drivers for multiple browsers

When using the driver API, always refer it by using RemoteWebDriver class for all the browsers used for running tests.
It is good to label your environment in a text/XML file and then deconstruct this and return the correct driver instance.
6. Cleaning UP
When you are done with your testing, you need to free all the resources and close the browser.
For this you can use Close(), Quit(), and Dispose().  Quit() closes all browsers, close() closes the existing browser  while Dispose() calls the quit() and closes all browsers.
Now when we are done with a few tips and tricks of working with selenium, let us now get better in our Apium skills.
Appium is one of the widely used mobile app testing tools. Though its users encounter some common problems while using it…
Here are some tips and tricks that can help you handle some common problems faced in using it and making it’s working more efficient and effective.
So, here we go…
7. Writing cross-platform tests 
One of the major issue in testing mobile apps is we have to write different test scenario for Android and iOS. Having common tests can be a big benefit in terms of saving time and efforts.
Though it gets much easier having the same set of test cases for both if your application is the same from a UI point-of-view.

Read also :  Testcafe Vs Selenium. Which is Better?

Just make sure that the accessibility IDs on corresponding UI elements in each version of the app matches with each other. If it stands true, you can run the same test on both applications. Also, be sure your test sets up the appropriate capabilities for each platform.
Based on different platforms, here are some more and little-known tips and tricks about Appium that can make your testing easier.
8. For All Platforms

  • AutoWebView – it is very useful for Cordova apps and helps to start in the webview context.

9. For Android

  • ignoreUnimportantViews – It is a very useful method to quicken your Android tests.
  • nativeWebScreenshot – Helps you to take a screenshot from UIAutomator. It is very useful if your screenshots from chromedriver are not as expected.

10. For IoS

  • locationServicesAuthorized – It helps you to prevent showing an alert when you are trying to use the user’s location by pre-authorizing location services.
  • Auto[Accept|Dismiss]Alerts – It helps you avoid alerts from disrupting your tests.
  • nativeWebTap – Permits users to use non-javascript taps.
  • safariIgnoreFraudWarning – It is beneficial in cases where your test environment doesn’t have 100% perfect SSL setup.
  • interKeyDelay – Sometimes Appium’s typing speed can cause a problem with your application, in such cases, interKeyDelay can evade the problem.
  • sendKeyStrategy – Helps in avoiding the keyboard altogether.

11. Networking Conditioning
You can use driver.setNetworkConnection(value) to stimulate various states of connectivity when you run your tests.
Hope these tips will prove helpful to you, will be back soon with some more useful testing tips and tricks. So stay tuned!