Navigating to Web Pages in Hybrid Applications

Applies to TestComplete 14.71, last modified on April 22, 2021

This topic explains how you can navigate to web pages in a hybrid application.

Basic Concepts

In hybrid mobile applications, you typically do not open a web page by entering its URL. You do this by touching buttons in the application or links in the web page that the application already displays. To simulate these actions, you need to simulate the touches on buttons and links.

If you need to open a page using a URL, call the WebView.ToUrl or Page.ToUrl method and pass the desired URL to it as a parameter. See the example below.

Two notes:

  • We recommend specifying the protocol in the URL. Otherwise, the page may fail to load. For example, use http://www.example.com rather than www.example.com.

    • HTML files that come as part of your Android application are stored in the android_asset folder on the mobile device. To open an HTML file that is stored on a device, use a URL like file:///android_asset/PageName.html.

    • HTML files that come as part of your iOS application are stored in the android_asset folder on the mobile device. To open an HTML file that is stored on a device, use a URL like >file:///private/var/mobile/containers/bundle/application/*/Application.ipa/PageName.html.

  • The ToUrl methods opens the specified web page and pauses the test run until the WebView control signals it has loaded the page. In some cases, this moment may differ from the time point when the page load is over. To learn how to wait until a page is loaded completely, see Waiting for Web Pages in Hybrid Mobile Applications.

Script Example

The following code snippet demonstrates how you can use the WebView.ToUrl and Page.ToUrl methods to open pages by their URLs in a hybrid Android application:

JavaScript, JScript

function WebViewNavigation()
{
  // Select the mobile device
  Mobile.SetCurrent("MyDevice");

  // Run the hybrid application
  TestedApps.WebViewSample.Run();

  // Obtain the WebView object
  // On Android devices
  var p = Mobile.Device().Process("smartbear.webview_sample");
  var WebView = p.RootLayout("").WebView("mainWebView");
  // On iOS devices
  // var p = Mobile.Device().Process("SampleWebViewApp");
  // var WebView = p.Window(0).WebView(0);

  // Navigate to the web page
  WebView.ToUrl("http://en.m.wikipedia.org/");
  
  // Wait for the page to load and post the page url to the log
  var page = WebView.WaitPage("*");
  Log.Message(page.URL);

  // Navigate to the different web page and post new page url to the log
  page.ToUrl("http://www.example.com/");
  Log.Message(page.URL);
}

Python

def WebViewNavigation():
  # Select the mobile device
  Mobile.SetCurrent("MyDevice");

  # Run the hybrid application
  TestedApps.WebViewSample.Run();

  # Obtain the WebView object
  # On Android devices
  p = Mobile.Device().Process("smartbear.webview_sample");
  WebView = p.RootLayout("").WebView("mainWebView");
  # On iOS devices
  # p = Mobile.Device().Process("SampleWebViewApp");
  # WebView = p.Window(0).WebView(0);

  # Navigate to the web page
  WebView.ToUrl("http://en.m.wikipedia.org/");
  
  # Wait for the page to load and post the page url to the log
  page = WebView.WaitPage("*");
  Log.Message(page.URL);

  # Navigate to the different web page and post new page url to the log
  page.ToUrl("http://www.example.com/");
  Log.Message(page.URL);

VBScript

Sub WebViewNavigation()
  Dim p, WebView, page

  ' Select the mobile device
  Mobile.SetCurrent("MyDevice")
  ' Run the hybrid application
  TestedApps.WebViewSample.Run

  ' Obtain the WebView object
  ' On Android devices
  Set p = Mobile.Device.Process("smartbear.webview_sample")
  Set WebView = p.RootLayout("").WebView("mainWebView")
  ' On iOS devices
  ' Set p = Mobile.Device.Process("SampleWebViewApp")
  ' Set WebView = p.Window(0).WebView(0)

  ' Navigate to the web page
  WebView.ToUrl("http://en.m.wikipedia.org/")
  
  ' Wait for the page to load and post the page url to the log
  Set page = WebView.WaitPage("*")
  Log.Message(page.URL)

  ' Navigate to the different web page and post new page url to the log
  page.ToUrl("http://www.example.com/")
  Log.Message(page.URL)
End Sub

DelphiScript

function WebViewNavigation();
var
  p, WebView, page: OleVariant;
begin
  // Select the mobile device
  Mobile.SetCurrent('MyDevice');

  // Run the hybrid application
  TestedApps.WebViewSample.Run;

  // Obtain the WebView object
  // On Android devices
  p := Mobile.Device.Process('smartbear.webview_sample');
  WebView := p.RootLayout('').WebView('mainWebView');
  // On iOS devices
  // p := Mobile.Device.Process('SampleWebViewApp');
  // WebView := p.Window(0).WebView(0);

  // Navigate to the web page
  WebView.ToUrl('http://en.m.wikipedia.org/');
  
  // Wait for the page to load and post the page url to the log
  page := WebView.WaitPage('*');
  Log.Message(page.URL);

  // Navigate to the different web page and post new page url to the log
  page.ToUrl('file:///android_asset/index.html');
  Log.Message(page.URL);
end;

C++Script, C#Script

function WebViewNavigation()
{
  // Select the mobile device
  Mobile["SetCurrent"]("MyDevice");

  // Run the hybrid application
  TestedApps["WebViewSample"]["Run"]();

  // Obtain the WebView object
  // On Android devices
  var p = Mobile["Device"]["Process"]("smartbear.webview_sample");
  var WebView = p["RootLayout"]("")["WebView"]("mainWebView");
  // On iOS devices
  // var p = Mobile["Device"]["Process"]("SampleWebViewApp");
  // var WebView = p["Window"](0)["WebView"](0);

  // Navigate to the web page
  WebView["ToUrl"]("http://en.m.wikipedia.org/");
  
  // Wait for the page to load and post the page url to the log
  var page = WebView["WaitPage"]("*");
  Log["Message"](page["URL"]);

  // Navigate to the different web page and post new page url to the log
  page["ToUrl"]("file:///android_asset/index.html");
  Log["Message"](page["URL"]);
}

Navigating to Web Pages in Keyword Tests

To open web pages from keyword tests, call the WebView.ToUrl and Page.ToUrl methods with the Call Object Method or Run Code Snippet operation. For a detailed explanation of how to call methods from your keyword tests, see Calling Object Methods.

See Also

Common Tasks for Hybrid Mobile Application Testing
Testing Hybrid Mobile Applications - Overview
Waiting for Web Pages in Hybrid Mobile Applications

Highlight search results