Appium: Native Context and Web-view context for Hybrid application | Entering the web view context
One of the core principles of Appium is that you shouldn't have to change your app to test it. In line with that methodology, it is possible to test hybrid apps the same way you can with Selenium for web apps. There is a bit of technical complexity required so that Appium knows whether you want to automate the native aspects of the app or the web views. But, thankfully, we can stay within the Selenium WebDriver protocol for everything.
Once the test is in a web view context the command set that is available is the full Selenium WebDriver API.
Entering the web view context
Here are the steps required to talk to a web view in your Appium test:
- Navigate to a portion of your app where a web view is active
- Retrieve the currently available contexts
- This returns a list of contexts we can access, like 'NATIVE_APP' or 'WEBVIEW_1'
- Set the context with the id of the context you want to access
- This puts your Appium session into a mode where all commands are interpreted as being intended for automating the web view, rather than the native portion of the app. For example, if you run getElementByTagName, it will operate on the DOM of the web view, rather than return native elements. Of course, certain WebDriver methods only make sense in one context or another, so in the wrong context you will receive an error message.
- To stop automating in the web view context and go back to automating the native portion of the app, simply set the context again with the native context id (generally 'NATIVE_APP') to leave the web context and once again access the native commands.
Automatically entering the web view context on session start
If your application begins in a web view, and you do not want to automate the native application before entering it, you can have Appium automatically enter the web view context on session initialization by setting the autoWebview desired capability to true.
Comments
Post a Comment