You may come across some problems when testing hybrid mobile applications. This topic explains the cause of the possible issues and offers possible workarounds.
Actions performed against web controls are asynchronous. This means that a method or operation sends a command to a device and TestComplete does not wait until the device completes the operation, it goes to the subsequent script statements or keyword-test operations. This may cause problems if the command starts time-consuming actions on the device, as the subsequent script statements or operations may depend on the result of the previous command.
To pause the script execution for some time, you can use the
aqUtils.Delay method or the Delay operation. You can also use the
Wait method to pause the test run until the application is in the needed state.
Due to the way XPath expressions work with WebViews, it is impossible to use them to find objects in nested frames on a web page. However, you can use XPath expressions within a frame to find its child frame element and work with it.
TestComplete automatically scrolls to offscreen objects before simulating actions against them. However, some custom scroll containers do not support automatic scrolling. In this case, the test will fail to find the needed object.
If this happens in your test, modify it to scroll to the needed control using the Device.Drag method.
HTML5 support for hybrid mobile applications has some limitations. For example, you cannot access the data object model of a web page, or access KEYGEN elements. For a full list of limitations, see the HTML5 Support in Hybrid Mobile Applications topic.
Hybrid Android applications are Android applications with the WebView control. See the Android Possible Issues topic for information on issues common for all Android applications.
On devices with Android 4.3 and earlier, TestComplete cannot access web page elements while a popup of the
Select control is displayed. If you try to work with web page controls while a popup is displayed, it will be closed. On some devices (for example, Motorola XT897), you may need to restart the application to display the popup again.
If possible, use the
TouchItem method to select a value in the control.
If several web page elements are located close to each other, a touch simulated on one element may affect another. If possible, move the web page elements apart to avoid the issue. You can also add parameters for the Touch action to simulate touches at coordinates that are far enough from other elements.
On devices running Android 4.0.4, the TestComplete Android Agent keyboard cannot input local (national) symbols into text edit controls on web pages during test recording.
To simulate input of local symbols, you may need to add appropriate operations to your test manually. See Creating Tests for Hybrid Mobile Applications Manually.
Actions over WKWebView controls are not recorded.TestComplete cannot record actions against web controls displayed in WKWebView. If your application uses WKWebView controls, you can create tests manually. If you need to record tests on your iOS hybrid applications, use applications with UIWebView controls.
Objects within WKWebView frames are not recognized. By default, TestComplete cannot access the contents of these frames residing on pages loaded from local files. To enable access to the frame contents on local pages, change the WKWebView setting in your application before testing:
Every time you install an iOS application, your device creates a unique ID. TestComplete uses this ID as part of the identifier of local web pages. If you reinstall your application, the tests you created manually will try to use the old identifier.
The web page identifier depends on the iOS version. If you run your tests on different versions of iOS, the tests you created manually will use a wrong identifier.
In both cases, your tests will fail. To make the tests you create manually identifier-independent, use Name Mapping or replace the changeable part of the identifier with an asterisk (*):