This topic explains how to customize wait conditions for web scenarios in SOAtest and Virtualize.

Sections include:

Understanding Wait Conditions

You can customize how long SOAtest and/or Virtualize waits after performing a user action in order to move on to the validations/extractions phase of the current scenario step, and then to the next step in the scenario.

When a user interacts with a web page, the web page responds to whatever the user is doing. For example, when the user clicks a link, the page is reloaded with new content. When a user chooses a menu item, some other part of the page might refresh itself. The user instinctively waits until the page is done updating before continuing further use of the page. In fact, in most cases the user HAS TO wait for the update in order for the page element to be present with which the user is going to interact with next.

This decision has to be configured when test automation is implemented. The testing tool must wait long enough so that it does not try to continue with the scenario execution process before the page is ready, but at the same time it must also run quickly to achieve one of the benefits of automation—speed.

SOAtest and Virtualize automatically configures the wait conditions while it is recording. For each web scenario step, they automatically add a delay to wait for the element used in the next scenario step. This is done because you cannot have the next web scenario step click on a link unless that link first appears on the page.

If an action causes a new page to load during recording, then SOAtest and/or Virtualize adds a “Wait for Page Load” delay.

If network traffic that does not result in a page load is detected during recording (e.g., an AJAX request), then SOAtest and/or Virtualize adds a “Wait for Time Interval Without HTTP Traffic” delay to give the web application enough time during playback to make the appropriate requests.

However, you may want to manually adjust or modify the wait conditions in order to get the scenarios to perform as desired. In many cases, multiple wait conditions will be used for a single scenario step.

Specifying Wait Conditions

The wait conditions captured during scenario recording can be viewed and modified in the scenario step’s Wait Conditions tab. Available wait conditions include:

In addition to manually adding new wait conditions from this tab, you can also add them automatically from the Browser Contents Viewer tool.

Adding a Wait Condition from the Browser Contents Viewer

The Browser Contents Viewer allows you to specify a wait condition graphically, from a view of the rendered Web page.

To add a new wait condition from the Browser Contents Viewer tool:

  1. Right-click the element for which you want to specify a wait condition.
  2. Choose Add Wait for Element from the shortcut menu.
  3. In the Add Wait Condition dialog, specify the details for the new wait condition, then click OK.

The wait condition added will automatically be configured to wait until the clicked-on element is present.

Identifying Elements Associated with Wait Conditions

The element that is the source of a wait condition will be highlighted with a solid green border in the Browser Contents viewer.

Configuring the Order of Wait Conditions

The Wait Conditions appear in order of execution in the Wait Executions tab. You can Add, Remove, and change the order of conditions by clicking the appropriate buttons in the Wait Conditions tab.

The order of the wait conditions is important!

Wait conditions will execute in the order that they appear, regardless of whether any of the other wait conditions succeed or fail. If a wait condition fails (meaning the condition is not satisfied before the timeout for that condition), then an error message is generated. For example, for most web applications page loads typically happen before asynchronous requests are made. Therefore, the wait conditions for a scenario step that has both a page load and asynchronous requests typically should have a Page Load wait condition appearing before an Asynchronous Request wait condition. If the order of the conditions were switched, than the Page Load condition would fail, because the Asynchronous Request wait condition will wait for asynchronous requests which happen after any page loads occur. Then the Page Load wait condition would execute, but since there will be no more page loads it will end up timing out.

Each wait condition, other than the Wait for Specified Time condition, has a timeout. If the wait condition is not met within the timeout, an error message is reported so you know to adjust the wait conditions. However, the scenario step will continue even if wait conditions fail. The timeout can be set to use the default timeout that is set in the preferences, or it can be customized for that individual wait condition.