Your e-Business Quality Partner eValid™ -- Automated Web Quality Solution
Browser-Based, Client-Side, Functional Testing & Validation,
Load & Performance Tuning, Page Timing, Website Analysis,
and Rich Internet Application Monitoring.

eValid -- Playback Synchronization on DOM Element -- Command Description
eValid Home

Introduction
This command allows for synchronization of playback based on the appearance of a particular value for a specified DOM element on a page. The command also supports Adaptive Playback to provide for intelligent behavior even when the page changes slightly.

KEY COMMAND SYNTAX:
Name(...)
ORIGIN EXPLANATION COMMENTS
Strong Synchronization Commands (With Adaptive Playback)
PROF SyncOnSelectedObjProperty wid idx [["id_name"] "id_value"] DOM_name DOM_value "frame_path"


[1] SyncOnSelectedObjProperty wid idx DOM_name DOM_value "frame_path"

[2] SyncOnSelectedObjProperty wid idx "id_value" DOM_name DOM_value "frame_path"

[3] SyncOnSelectedObjProperty wid idx "id_name" "id_value" DOM_name DOM_value "frame_path"

Edit
Adaptive
Waits for the value of the specified DOM_name property at index idx to take on the specified DOM_value.

This command uses the Retry Interval and respects the Maximum Retry Time settings values.

Playback resumes as soon as the match occurs, or after the maximum retry time has passed.

Adaptive playback is applicable to this command, unless adaptive playback is turned OFF.

When adaptive playback is ON, then if the object at idx does not have an element with DOM_name, eValid will look elsewhere in the DOM tree for an object with the [unique] DOM_name, and then wait for that named element to take on the required DOM_value.

PROF SyncNotOnSelectedObjProperty wid idx [["id_name"] "id_value"] DOM_name DOM_value "frame_path"


[1] SyncNotOnSelectedObjProperty wid idx DOM_name DOM_value "frame_path"

[2] SyncNotOnSelectedObjProperty wid idx "id_value" DOM_name DOM_value "frame_path"

[3] SyncNotOnSelectedObjProperty wid idx "id_name" "id_value" DOM_name DOM_value "frame_path"

Edit
Adaptive
Performs the reverse of the above command, and playback continues when the first instance is found when the specified information is NOT true.

This command uses the Retry Interval and respects the Maximum Retry Time settings values.

Adaptive playback is applicable to this command, unless adaptive playback is turned OFF.

When adaptive playback is ON, then if the object at idx does not have an element with DOM_name, eValid will look elsewhere in the DOM tree for an object with the [unique] DOM_name, and then wait for that named element to take on the required DOM_value.

Standard Synchronization Commands (Without Adaptive Playback)
PROF SyncOnElementProperty wid "name" "Value" "frame_path" Edit
Adaptive
Waits for a named element property to have a specified value. Playback continues when any element's spcified property has the required value. Applies to ANY property of ANY element ANYwhere in the DOM. Adaptive playback does not apply.
PROF SyncNotOnElementProperty wid "name" "Value" "frame_path" Edit
Adaptive
Waits for a named element property and value to NOT be found -- anywhere in the DOM. Playback continues the first time that any element has the required property not equal to the required value. Applies to any property of any element anywhere in the DOM.

Adaptive playback does not apply.

Suggested Usages
Here is a typical instance of use of this command to synchronize on the value of the DOM object feature in window 0 at DOM index 254 named Processing_State to take on the value DONE:

  1. SyncOnSelectedObjProperty 0 254 Processing_State DONE ""
    Pauses playback until Processing_State = DONE.

  2. SyncOnSelectedObjProperty 0 254 IDvalue Processing_State DONE ""
    Pauses playback until Processing_State = DONE, and then confirms there is an element property named IDvalue.

  3. SyncOnSelectedObjProperty 0 254 IDname IDvalue Processing_State DONE ""
    Pauses playback until Processing_State = DONE, and then also confirms that the property named IDname = IDvalue.

  4. SyncOnSelectedObjPropertyNOT 0 254 Processing_State DONE ""
    Continues playback if Processing_State = DONE is not true.

  5. SyncOnSelectedObjPropertyNOT 0 254 IDvalue Processing_State DONE ""
    Continues playback if Processing_State = DONE is not true AND that element does NOT have a property named IDvalue.

  6. SyncOnSelectedObjPropertyNOT 0 254 IDname IDvalue Processing_State DONE ""
    Continues playback if Processing_State = DONE is not true AND that element does NOT have a property named IDname = IDvalue (but any other value causes the playback to pause).

  7. SyncOnElementProperty 0 Processing_State DONE ""
    Waits until SOME element anywhere in the DOM has a property name Processing_State with value = DONE.

  8. SyncNotOnElementProperty 0 Processing_State DONE ""
    Waits until NO element anywhere in the DOM has a property name Processing_State with value = DONE.

Intended Application
The main intended purpose of this command is to provide auxiliary playback synchronization for pages that do not completely adhere to eValid's build in synchronization methods. Among many types of implementation, AJAX-built pages tend to have this characteristic.

To apply the command successfully you may need to study the internal structure of the page that you are trying to synchronize on, find the ID of the element whose value you are searching to match, and then adjust eValid's behavior using the SyncOnDOM command to wait for that element to take on the required value.

Related Commands
Interpretation of the extra two arguments, id_name and id_value is the same as for ValidateSelectedObjProperty.

Escapment Mode Synchronization Method
In practice it probably will be required to operate a chain of these commands in escapment mode, according to one of these patterns:

	(+) [(-) (+)]^n 

	(-) [(+) (-)]^n 

	(+) is a wait command waiting for a specified positive event, or a timeout.

	(-) is a wait command waiting for a specified negative event, or a timeout.

	[  ]^n indicates there may be multiple such in a sequence.

The thinking here is that, no matter how complicated the synchronization process is, it will be included in one of these combinations.