Your e-Business Quality Partner eValid™ -- The Web Quality Suite
Browser-Based Client-Side Functional Testing and Validation Page Timing/Tuning Transaction Monitoring. WebSite Spidering & Analysis and Realistic Server Loading.

eValid -- Adaptive DOM Synchronization Explanation
eValid Home

Introduction
The basic ideas of Adaptive Playback take on special meaning with DOM processing. In this case, instead of having a specific link (and the text above it that is visible to the user), the adaptive playback process can assist playback synchronization in a number of ways.

This page explains some of the options available for the SyncOnSelectedObjProperty and related commands.

# Command...    Pivot On...
(Name = Value)
Wait For...
(Name = Value)
Frame_Path Adaptive
Playback
(1) SyncOnSelectedObjProperty wid idx   name value frame_path OFF
(2) SyncOnSelectedObjProperty wid idx  idvalue name value frame_path ON
(3) SyncOnSelectedObjProperty wid idx idname idvalue name valueframe_path ON
(4) SyncOnElementProperty wid       name value frame_path OFF

Notes & Conventions

  1. All values for wid, idx, idname, idvalue, name, value, and frame_path are strings.
  2. If any strings have blanks in them, the strings must be enclosed in double quotes ("s). An empty string is expressed as "".
  3. Sync commands obey the maximum synchronization wait time and the retry rate settings.
  4. Caution: Some DOM strings have [invisible] trailing blanks.
  5. The adaptive playback process needs a "pivot" that identifies the page element on which to apply the synchronization logic, and to which adaptive playback applies to find a new actual idx value when the specified one doesn't match the pivot.
  6. If the idx is known to change frequently (i.e. if it is dynamic within the page after each refresh or re-download) a help approach is to trigger adaptive playback by manually setting the idx to 0, which is know to be an incorrect value.

Process Description
eValid's processing sequence for these commands is as follows. The key synchronization step is identified with ">>".

  1. If there is no pivot specified, as in (1), then:
    1. The current idx is used, and
    2. Adaptive playback cannot apply (there is not enough information available to choose another idx as the pivot point).
    3. >> Wait for the named attributed on idx to take on the required value.
    4. If the value is found, go on to the next command.
    5. If the value is not found before the timeout limit, then throw an ERROR, and go on to the next command.

  2. If an idvalue is given, as in (2), then:
    1. Use the current idx if it has an element attribute with name ID = idvalue
    2. if it does not then use adaptive playback to choose as the pivot the first instance (lowest idx) for which the element has an ID = idvalue, then,
    3. >> Wait for the named attributed on idx to take on the required value.
    4. If the value is found, go on to the next command.
    5. If the value is not found before the timeout limit, then throw an ERROR, and go on to the next command.

  3. If both an idname is given AND an idvalue is given, as in (3), then:
    1. If the current idx has an element named idname with value idvalue, then use this element as the pivot, or,
    2. Use adaptive playback to choose as the pivot the first instance (lowest idx) found on that page, and use it as the pivot, and then,
    3. >> Wait for the named attribute on idx to take on the required value.
    4. If the value is found, go on to the next command.
    5. If the value is not found before the timeout limit, then throw an ERROR, and go on to the next command.

  4. If you don't have an idx to identify an element name and/or ID value to trigger a pivot, as in (4), then this command performs the synchronization in the following way:
    1. For the current page, the playback is held until some element on the page has an element with an instance of name defined and that instance has the specified value.
    2. >> Wait for the named attribute to take on the required value somewhere on the current page.
    3. If the value is found, go on to the next command.
    4. If the value is not found before the timeout limit, then throw an ERROR, and go on to the next command.