DDDriverFlowCommands

Last Updated:

Driver Commands for the Cycle, Suite, and Step drivers

This keyword library provides Driver Commands that can be used by all three DDE Drivers--CycleDriver, SuiteDriver, and StepDriver. That means they can be used in any keyword driven test tables regardless of the test tables level--Cycle, Suite, or Step.

Each different driver command has different parameters as described in its documentation. For reference, the first fields of ALL Driver Command test records are defined below:

Field #1
The "C" = DRIVER COMMAND record type specifier.
Field #2
The Driver Command keyword.

Example:

c , SetApplicationMap , "AppMap.map"

Driver Command parameters must be placed in the test record in the field position specified in the documentation. Some parameters are optional. However, the field associated with that parameter must be honored. If you wish to skip an optional parameter you must still provide an empty field for that parameter.

Example:

c, LaunchApplication, NOTEPAD, NOTEPAD.EXE, , , "AppMap.map"

The above example shows two optional fields after NOTEPAD.EXE which are given no value(skipped).

Note that the full availablility of all Driver Commands is now spread across several files. Together, all of these files provide all the Driver Commands available to the core framework.

DDDriverCommands
Miscellaneous and often used Commands.
DDDriverLogCommands
Commands focused on logging test execution.
DDDriverFlowCommands
Commands focused on Error Recovery and Flow Control.
DDDriverCounterCommands
Commands focused on status tracking.
DDDriverDeprecatedCommands
Commands that are still provided for backward compatibility, but are no longer supported.
DDDriverDebugCommands
Commands focused on debugging test execution.


[How To Read This Reference]
CallCycle
RC TID WR
Invoke a Cycle table (from StepDriver or SuiteDriver)
CallJUnit
TID
Invoke one or more JUnit tests using the provided Class name(s).
CallScript
SE2 RC IOS RJ WR
Invoke a custom script with passed parameters/variables, if desired.
CallStep
RC TID WR
Invoke a Step table from within another Step table (from StepDriver).
CallSuite
RC TID WR
Invoke a Suite table (from StepDriver or SuiteDriver)
ExitCycle
RC TID WR
Exit the currently running Step, Suite, and/or Cycle table.
ExitSuite
RC TID WR
Exit the currently running Step and/or Suite table.
ExitTable
RC TID WR
Exit the currently running Step, Suite, or Cycle table.
GotoBlockID
RC TID WR
Goto a named block in the current table.
OnContainsGotoBlockID
RC TID WR
Goto the named block in the current table if value2 is contained within value1.
OnDirectoryExistGotoBlockID
RC WR TID
Goto the named block in the current table if the directory exists.
OnDirectoryNotExistGotoBlockID
RC WR TID
Goto the named block in the current table if the Directory does not exist.
OnEqualGotoBlockID
RC TID WR
Goto the named block in the current table if two values are equal.
OnFileEOFGotoBlockID
RC RJ
Goto the named block in the current table if the file is at EOF.
OnFileExistGotoBlockID
RC WR TID
Goto the named block in the current table if the file exists.
OnFileNotExistGotoBlockID
RC WR TID
Goto the named block in the current table if the file does not exist.
OnGreaterThanGotoBlockID
RC TID WR
Goto the named block in the current table if value1 is greater than value2.
OnGUIExistsGotoBlockID
DRD IOS RC RJ TID WR SE SE2 TC
Goto the named block in the current table if a GUI component exists.
OnGUINotExistGotoBlockID
DRD IOS RC RJ TID WR SE SE2 TC
Goto the named block in the current table if a GUI component does not exist.
OnInRangeGotoBlockID
RC TID WR
Goto named block if value1 is between value2 and value3.
OnLessThanGotoBlockID
RC TID WR
Goto the named block if value1 is less than value2.
OnMenuItemContainsStateGotoBlockID
RC RJ
Goto the named block in the current table if state is part of the state information of the menuitem.
OnNotContainsGotoBlockID
TID RC
Goto the named block in the current table if value2 is NOT a substring of value1.
OnNotEqualGotoBlockID
RC TID WR
Goto the named block in the current table if two values are not equal.
OnNotGreaterThanGotoBlockID
TID
Goto the named block in the current table if value1 is NOT greater than value2.
OnNotInRangeGotoBlockID
RC TID WR
Goto the named block in the current table if value1 is not between value2 and value3.
OnNotLessThanGotoBlockID
TID
Goto the named block if value1 is NOT less than value2.
OnPartialMenuItemContainsStateGotoBlockID
RC
Goto the named block in the current table if state is part of the state information of the menuitem. This command allows for a partial match of the menu item.
OnRegistryKeyExistGotoBlockID
TID SDC
Goto the named block in the current table if the Registry Key exists.
OnRegistryKeyNotExistGotoBlockID
TID SDC
Goto the named block in the current table if the Registry Key does not exist.
SetExitTableBlock
RC TID WR
Set or clear the name of a block to execute when the ExitTable command is encountered.
SetGeneralScriptFailureBlock
RC TID WR
Set or clear the name of a block to execute when GeneralScriptFailure occurs.
SetInvalidFileIOBlock
RC TID WR
Set or clear the name of a block to execute when InvalidFileIO occurs.
SetNoScriptFailureBlock
RC TID WR
Set or clear the name of a block to execute when NoScriptFailure occurs.
SetScriptNotExecutedBlock
RC TID WR
Set or clear the name of a block to execute when ScriptNotExecuted occurs.
SetScriptWarningBlock
RC TID WR
Set or clear the name of a block to execute when ScriptWarning occurs.
UseLocalFlowControl
TID
When TRUE then flow control block IDs have current table scope only.

DDDriverFlowCommands::CallCycle
RC TID WR

Invoke a Cycle table (from StepDriver or SuiteDriver)

Since the Cycle is executed as a driver command and NOT as a test record, the call to the Cycle itself is not counted as a test pass or a test fail.

Fields: [ ]=Optional with Default Value
  1. CycleName
    The name of the Cycle table to execute.


  2. [ CycleSeparator = ]
    The field separator used by the table--if required.

    Only necessary if the table uses a different field separator than that already set for CycleDriver. Use an empty string or an empty field to keep the field separator already in use.
    Typically, all the tables use the same separator so this can usually be left empty.


  3. [ ParameterName = AValue ]
    One or more parameter values to send to the Cycle--each in their own field.


Examples:
[How To Read This Reference]

DDDriverFlowCommands::CallJUnit
TID

Invoke one or more JUnit tests using the provided Class name(s).

Because JUnit is a testing framework; test_record, test_passes, and test_failure counts within the status counters will be updated when possible.

If properly configured with SAFS RuntimeDataAwareness (dependency injection of SAFS Driver instances) the JUnit test has full access to all SAFS services including SAFS App Map data and SAFS Variable storage.

JUnit tests can be intermixed with other SAFS tests.


NOTE:
SE2HTM : All SeleniumPlus actions, command, and libraries are available.
Access SeleniumPlus actions and commands through the SeleniumPlus static methods and fields.


Fields: [ ]=Optional with Default Value
  1. ClassName
    The name of one or more Classes to execute.

    Class names are in the normal full package.Class format. Multiple classes can be separated by SEMI-COLONs, COLONs, COMMAs, or SPACES-- whichever is NOT being used as the test record separator. The same separator should be used between all Classes.

    The Classes to execute must be findable within the JVM ClassPath.



Examples:
[How To Read This Reference]

DDDriverFlowCommands::CallScript
SE2 RC IOS RJ WR

Invoke a custom script with passed parameters/variables, if desired.

Since the script is executed as a Driver Command and NOT a test; test_record, test_passes, and test_failures information within the status counters are not updated.

For Rational Robot, if the called script wishes to record tests attempted, pass, and failure counts then it must do so itself by updating the ScriptStatusInfo fields accordingly.

The name of the script must not include the file extension.

Any number of parameters can be passed to the script. These parameters are passed as DDVariables and\or SAFSVARS variables. The variables and their values are available to the script and all of SAFS. These parameters are usually specific to each called script. The script can also set variable values for use by SAFS test tables.

With Robot, the script can get/set variable values from the DDVariableStore.

With Rational Functional Tester, the custom script should follow this Script Javadoc.

For Apple IOS, consult the SAFS IOS Developer's Guide.


NOTE:
SE2HTM : Selenium 2.0 support executes a SeBuilder JSON Script while supporting PAUSE, STEP, and STEP RETRY of indidividual Script Steps through the SAFS Monitor.

The SAFS Monitor must be enabled and running to take advantage of these modes of execution.

This implementation does NOT yet support the provision of passing parameters to the SeBuilder script from the CallScript InputRecord.



Fields: [ ]=Optional with Default Value
  1. ScriptName
    The name of the Script to execute.

    NOTE:
    SE2HTM : This can be either a project-relative path or the full absolute path to the JSON script. The file path inclucing file extension IS needed to successfully locate the script.

  2. [ ParameterName = AValue ]
    One or more parameter values to send to the script--each in their own field.

    NOTE:
    SE2HTM : Not supported at this time in Selenium SeBuilder JSON Scripts.

Examples:
[How To Read This Reference]

DDDriverFlowCommands::CallStep
RC TID WR

Invoke a Step table from within another Step table (from StepDriver).

The command is only used at the Step level. You do not use this command within Suites or Cycles.

Since the Step table is executed as a driver command by StepDriver and NOT as a CycleDriver or SuiteDriver test record, the call to the Step table itself is not counted as a test pass or a test fail.



Fields: [ ]=Optional with Default Value
  1. StepName
    The name of the StepTable to execute.


  2. [ StepSeparator = ]
    The field separator used by the Step table--if required.

    Only necessary if the table uses a different field separator than that already set for StepDriver. Use an empty string or an empty field to keep the field separator already in use.
    Typically, all the tables use the same separator so this can usually be left empty.


  3. [ ParameterName = AValue ]
    One or more parameter values to send to the table--each in their own field.


Examples:
[How To Read This Reference]

DDDriverFlowCommands::CallSuite
RC TID WR

Invoke a Suite table (from StepDriver or SuiteDriver)

You cannot use CallSuite in a CycleDriver test table. Since the Suite is executed as a driver command by SuiteDriver or StepDriver and NOT as a CycleDriver test record, the call to the Suite itself is not counted as a test pass or a test fail.

Fields: [ ]=Optional with Default Value
  1. SuiteName
    The name of the Suite to execute.


  2. [ SuiteSeparator = ]
    The field separator used by the Suite--if required.

    The field separator used by the Suite--if required.
    Only necessary if the Suite uses a different field separator than that already set for SuiteDriver. Use an empty string or an empty field to keep the field separator already in use.
    Typically, all the tables use the same separator so this can usually be left empty.


  3. [ ParameterName = AValue ]
    One or more parameter values to send to the suite--each in their own field.


Examples:
[How To Read This Reference]

DDDriverFlowCommands::ExitCycle
RC TID WR

Exit the currently running Step, Suite, and/or Cycle table.

Exit the currently running Step, Suite, and/or Cycle table.
Generally called from Step or Suite Driver to exit or abort the entire Cycle test currently running.

The Step or Suite table containing the command is exited. If an ExitTable processing block has been set by SetExitTableBlock then that block will be executed. Otherwise, the table will immediately exit.

Any Suite and/or Cycle table that invoked the table will also be exited. If an ExitTable processing block has been set by SetExitTableBlock for the table then that block will be executed. Otherwise, the table will immediately exit.



Fields: [ ]=Optional with Default Value
    Examples:
    [How To Read This Reference]

    DDDriverFlowCommands::ExitSuite
    RC TID WR

    Exit the currently running Step and/or Suite table.

    Exit the currently running Step and/or Suite table.
    Generally only called from Step Driver to exit the current Step table AND the Suite that invoked it. The command should have no effect inside a Cycle table.

    The Step or Suite table containing the command is exited. If an ExitTable processing block has been set by SetExitTableBlock then that block will be executed. Otherwise, the table will immediately exit.

    If the table containing the command was a Step table, then the Suite that called the Step table will also be exited. If an ExitTable processing block has been set by SetExitTableBlock for the Suite, then that block will be executed. Otherwise, the Suite will immediately exit.



    Fields: [ ]=Optional with Default Value
      Examples:
      [How To Read This Reference]

      DDDriverFlowCommands::ExitTable
      RC TID WR

      Exit the currently running Step, Suite, or Cycle table.

      Exit the currently running Step, Suite, or Cycle table.
      The table containing the command is exited. No other table is automatically exited because of this command. If an ExitTable processing block has been set by SetExitTableBlock then that block will be executed. Otherwise, the table will immediately exit.


      Fields: [ ]=Optional with Default Value
        Examples:
        [How To Read This Reference]

        DDDriverFlowCommands::GotoBlockID
        RC TID WR

        Goto a named block in the current table.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        Examples:
        • C, GotoBlockID, "ErrorHandler"
          Goto the block named "ErrorHandler"


        [How To Read This Reference]

        DDDriverFlowCommands::OnContainsGotoBlockID
        RC TID WR

        Goto the named block in the current table if value2 is contained within value1.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The value to be searched for the Value2 substring


        3. Value2
          A string to search Value1 for an occurance of


        4. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so comparisons are NOT case-sensitive. Comparisons are case-sensitive by default.


        Examples:
        • C, OnContainsGotoBlockID, "NoError", Value1, Value2
          Goto the block named "NoError" if "Value1" contains "Value2" (it doesn't).


        • C, OnContainsGotoBlockID, "NoError", Value1, VALUE1, CaseInsensitive
          Goto the block named "NoError" if "Value1" contains "VALUE1" (it does since comparison is case-insensitive).


        • C, OnContainsGotoBlockID, "NoError", ^Value1, Value2
          Goto "NoError" if DDVariable ^Value1 contains "Value2" (it might).


        • C, OnContainsGotoBlockID, "NoError", ^Value1, ^Value2
          Goto "NoError" if DDVariable ^Value1 contains DDVariable ^Value2 (it might).


        [How To Read This Reference]

        DDDriverFlowCommands::OnDirectoryExistGotoBlockID
        RC WR TID

        Goto the named block in the current table if the directory exists.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. DirectoryName
          The directory name of the directory relative to Datapool/Test to be verified for existance. Case sensitivity is handled by the underlying operating system (i.e. a case sensitive platform makes this keyword case sensitive).


        Examples:
        • C, OnDirectoryExistGoToBlockId, DirectoryExist, "DirectoryName"
          Goto the block named "DirectoryExist" if Directory "DirectoryName" exists.


        • C, OnDirectoryExistGoToBlockId, DirectoryExist, DirectoryName, CaseInsensitive
          Goto the block named "DirectoryExist" if directory DirectoryName exists (Directory name check is case-insensitive).


        [How To Read This Reference]

        DDDriverFlowCommands::OnDirectoryNotExistGotoBlockID
        RC WR TID

        Goto the named block in the current table if the Directory does not exist.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. DirectoryName
          The directory name relatvie to Datapool/Text of the directory to be verified for non existance. Case sensitivity is handled by the underlying operating system (i.e. a case sensitive platform makes this keyword case sensitive).


        Examples:
        • C, OnDirectoryNotExistGoToBlockId, DirectoryNotExist, DirectoryName
          Goto the block named DirectoryNotExist if Directory DirectoryName does not exist.


        • C, OnDirectoryNotExistGoToBlockId, DirectoryNotExist, DirectoryName, CaseInsensitive
          Goto the block named DirectoryNotExist if directory DirectoryName does not exist (file name check is case-insensitive).


        [How To Read This Reference]

        DDDriverFlowCommands::OnEqualGotoBlockID
        RC TID WR

        Goto the named block in the current table if two values are equal.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The first value for the comparison.


        3. Value2
          The second value for the comparison.


        4. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so comparisons are NOT case-sensitive. Comparisons are case-sensitive by default.


        Examples:
        • C, OnEqualGotoBlockID, "NoError", Value1, Value2
          Goto the block named "NoError" if "Value1" equal "Value2" (they don't).


        • C, OnEqualGotoBlockID, "NoError", Value1, VALUE1, CaseInsensitive

          Goto the block named "NoError" if "Value1" equal "VALUE1" (they do if the comparison is case-insensitive).

        • C, OnEqualGotoBlockID, "NoError", ^Value1, Value2
          Goto "NoError" if DDVariable ^Value1 equal "Value2" (it might).


        • C, OnEqualGotoBlockID, "NoError", ^Value1, ^Value2
          Goto "NoError" if DDVariable ^Value1 = DDVariable ^Value2 (it might).


        [How To Read This Reference]

        DDDriverFlowCommands::OnFileEOFGotoBlockID
        RC RJ

        Goto the named block in the current table if the file is at EOF.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. FileNumber
          The file number of the file to be verified for EOF.


        Examples:
        • C, OnFileEOFGoToBlockId, "FileEOF", "FileNumber"
          Goto the block named "FileEOF" if file identified by FileNumber is at EOF.


        [How To Read This Reference]

        DDDriverFlowCommands::OnFileExistGotoBlockID
        RC WR TID

        Goto the named block in the current table if the file exists.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. FileName
          The file name of the file relative to Datapool/Test to be verified for existance. Case sensitivity is handled by the underlying operating system (i.e. a case sensitive platform makes this keyword case sensitive).


        Examples:
        • C, OnFileExistGoToBlockId, FileExist, "FileName"
          Goto the block named "FileExist" if file FileName exists.


        • C, OnFileExistGoToBlockId, FileExist, FileName, CaseInsensitive
          Goto the block named "FileExist" if file FileName exists (file name check is case-insensitive).


        [How To Read This Reference]

        DDDriverFlowCommands::OnFileNotExistGotoBlockID
        RC WR TID

        Goto the named block in the current table if the file does not exist.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. FileName
          The file name of the file relative to Datapool/Test to be verified for existance. Case sensitivity is handled by the underlying operating system (i.e. a case sensitive platform makes this keyword case sensitive).


        Examples:
        • C, OnFileNotExistGoToBlockId, FileNotExist, FileName
          Goto the block named FileNotExist if file FileName does not exist.


        • C, OnFileNotExistGoToBlockId, FileNotExist, FileName, CaseInsensitive
          Goto the block named FileNotExist if file FileName does not exist (file name check is case-insensitive).


        [How To Read This Reference]

        DDDriverFlowCommands::OnGreaterThanGotoBlockID
        RC TID WR

        Goto the named block in the current table if value1 is greater than value2.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The value to be compared.


        3. Value2
          The value to be compared against.


        4. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so comparisons are NOT case-sensitive. Comparisons are case-sensitive by default.


        Examples:
        • C, OnGreaterThanGotoBlockID, "NoError", Val2, Val1
          Goto the block named "NoError" since Val2 is greater than Val1 via string compare.


        • C, OnGreaterThanGotoBlockID, "NoError", 500, 100
          Goto "NoError" since 500 is greather than 100 via numerical comparison.


        • C, OnGreaterThanGotoBlockID, "NoError", ^Val1, ^Val2
          Goto "NoError" if DDVariable ^Val1 is greater than DDVariable ^Val2.


        [How To Read This Reference]

        DDDriverFlowCommands::OnGUIExistsGotoBlockID
        DRD IOS RC RJ TID WR SE SE2 TC

        Goto the named block in the current table if a GUI component exists.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. WindowID
          A Window reference from the app map.


        3. ComponentID
          A reference from the app map for the Component within the Window.

          A reference from the app map for the Component within the Window. If the Window is the item of interest then both the WindowID and ComponentID will be the same.

        4. [ TimeOut = 15 ]
          Timeout value in seconds before exiting automatically (no branch).


        Examples:
        • C, OnGUIExistsGotoBlockID, "WindowExists", AWindow, AWindow
          Goto the block named "WindowExists" if AWindow becomes valid in 15 seconds.


        • C, OnGUIExistsGotoBlockID, "ButtonExists", AWindow, AButton, 10
          Goto the block named "ButtonExists" if AButton on AWindow becomes valid in 10 seconds.


        [How To Read This Reference]

        DDDriverFlowCommands::OnGUINotExistGotoBlockID
        DRD IOS RC RJ TID WR SE SE2 TC

        Goto the named block in the current table if a GUI component does not exist.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. WindowID
          A Window reference from the app map.


        3. ComponentID
          A reference from the app map for the Component within the Window.

          A reference from the app map for the Component within the Window. If the Window is the item of interest then both the WindowID and ComponentID will be the same.

        4. [ TimeOut = 15 ]
          Timeout value in seconds before exiting automatically (no branch).


        Examples:
        • C, OnGUINotExistGotoBlockID, "WindowNotExist", AWindow, AWindow
          Goto the block named "WindowNotExist" if AWindow becomes invalid in 15 seconds.


        • C, OnGUINotExistGotoBlockID, "ButtonNotExist", AWindow, AButton, 10
          Goto the block named "ButtonNotExist" if AButton on AWindow becomes invalid in 10 seconds.


        [How To Read This Reference]

        DDDriverFlowCommands::OnInRangeGotoBlockID
        RC TID WR

        Goto named block if value1 is between value2 and value3.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The value to be compared.


        3. Value2
          The low end of range to be compared against.


        4. Value3
          The high end of range to be compared against.


        5. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so string comparisons are NOT case-sensitive. String Comparisons are case-sensitive by default.


        Examples:
        • C, OnInRangeGotoBlockID, "NoError", Val22, Val21, Val31
          Goto "NoError" if "^Val1" is within Val2 and Val3.


        • C, OnInRangeGotoBlockID, "NoError", 200, 100, 500
          Goto "NoError" since 200 is numerically between 100 and 500.


        • C, OnInRangeGotoBlockID, "NoError", ^Val1, ^Val2, ^Val3
          Goto "NoError" if DDVariable ^Val1 is within DDVarialbe ^Val2 and DDVariable ^Val3.


        [How To Read This Reference]

        DDDriverFlowCommands::OnLessThanGotoBlockID
        RC TID WR

        Goto the named block if value1 is less than value2.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The value to be compared.


        3. Value2
          The value to be compared against.


        4. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so string comparisons are NOT case-sensitive. String Comparisons are case-sensitive by default.


        Examples:
        • C, OnLessThanGotoBlockID, "NoError", Val1, Val2
          Goto the block named "NoError" since string compare of Val1 is less than Val2.


        • C, OnLessThanGotoBlockID, "NoError", 100, 200
          Goto block named "NoError" since numerical compare 100 is less than 200.


        • C, OnLessThanGotoBlockID, "NoError", ^Val1, ^Val2
          Goto "NoError" if DDVariable ^Val1 less than DDVariable ^Val2.


        [How To Read This Reference]

        DDDriverFlowCommands::OnMenuItemContainsStateGotoBlockID
        RC RJ

        Goto the named block in the current table if state is part of the state information of the menuitem.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to transfer control to if state is part of the state information of the menuitem.


        2. WindowName
          The window name.


        3. ComponentName
          The component name.


        4. MenuItem
          Menu->MenuItem hierarchy string to identify which menu item to test. This menu hierarchy is case-sensitive. to test. This menu hierarchy is case-sensitive.


        5. State
          Expected status string (or part thereof) to verify. Ex: "Enabled Checked" OR "Disabled Grayed" etc. Each item separated by a space will be evaluated separately so the order of the status items does not matter. These status items are case-sensitive.


        Examples:
        • C, OnMenuItemContainsStateGotoBlockID, "NoError", MainWindow, MainWindow, "View->Error", "Disabled"
          Go to the block named "NoError" if the state information for the View->Error menu item contains Disabled.


        [How To Read This Reference]

        DDDriverFlowCommands::OnNotContainsGotoBlockID
        TID RC

        Goto the named block in the current table if value2 is NOT a substring of value1.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The value to be searched for the Value2 substring


        3. Value2
          The substring to seek in VALUE1


        4. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so comparisons are NOT case-sensitive. Comparisons are case-sensitive by default.


        Examples:
        • C, OnNotContainsGotoBlockID, "NoError", Value1, Value2
          Goto the block named "NoError" since "Value1" does not contain "Value2".


        • C, OnNotContainsGotoBlockID, "NoError", Value1, VALUE1, CaseInsensitive
          Does not branch to "NoError" because "Value1" DOES contain "VALUE1" since comparison is case-insensitive.


        • C, OnNotContainsGotoBlockID, "NoError", ^Value1, Value2
          Goto "NoError" if DDVariable ^Value1 does not contain "Value2" (it might).


        • C, OnNotContainsGotoBlockID, "NoError", ^Value1, ^Value2
          Goto "NoError" if DDVariable ^Value1 does not contain DDVariable ^Value2 (it might).


        [How To Read This Reference]

        DDDriverFlowCommands::OnNotEqualGotoBlockID
        RC TID WR

        Goto the named block in the current table if two values are not equal.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The first value for the comparison.


        3. Value2
          The second value for the comparison.


        4. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so string comparisons are NOT case-sensitive. String Comparisons are case-sensitive by default.


        Examples:
        • C, OnNotEqualGotoBlockID, "NoError", Value1, Value2
          Goto the block named "NoError" since Value2 not equal Value2.


        • C, OnNotEqualGotoBlockID, "NoError", Value1, VALUE1, CaseInsensitive
          Goto the block named "NoError" if "Value1" not equal "VALUE1" (they are equal since the comparison is case-insensitive--branch does not occur).


        • C, OnNotEqualGotoBlockID, "NoError", 100, 200
          Goto "NoError" since 100 not equal 200.


        • C, OnNotEqualGotoBlockID, "NoError", ^Value1, ^Value2
          Goto "NoError" if DDVariable ^Value1 not equal DDVariable ^Value2 (it might be).


        [How To Read This Reference]

        DDDriverFlowCommands::OnNotGreaterThanGotoBlockID
        TID

        Goto the named block in the current table if value1 is NOT greater than value2.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The value expected to be NOT greater than VALUE2.


        3. Value2
          The value expected to be equal or greater than VALUE1.


        4. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so comparisons are NOT case-sensitive. Comparisons are case-sensitive by default.


        Examples:
        • C, OnNotGreaterThanGotoBlockID, "NoError", Val1, Val2
          Goto the block named "NoError" since Val1 is NOT greater than Val2 via string compare.


        • C, OnNotGreaterThanGotoBlockID, "NoError", Val1, Val1
          Goto the block named "NoError" since Val1 equals Val1 via string compare.


        • C, OnNotGreaterThanGotoBlockID, "NoError", Val2, Val1
          Does not branch to "NoError" since Val2 is greater than Val1 via string compare.


        • C, OnNotGreaterThanGotoBlockID, "NoError", 100, 500
          Goto "NoError" since 100 is NOT greather than 500 via numerical comparison.


        • C, OnNotGreaterThanGotoBlockID, "NoError", ^Val1, ^Val2
          Goto "NoError" if DDVariable ^Val1 is NOT greater than DDVariable ^Val2.


        [How To Read This Reference]

        DDDriverFlowCommands::OnNotInRangeGotoBlockID
        RC TID WR

        Goto the named block in the current table if value1 is not between value2 and value3.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The value to be compared.


        3. Value2
          The low end of range to be compared against.


        4. Value3
          The high end of range to be compared against.


        5. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so string comparisons are NOT case-sensitive. String Comparisons are case-sensitive by default.


        Examples:
        • C, OnNotInRangeGotoBlockID, "NoError", Val11, Val21, Val31
          Goto the block "NoError" Val11 is not between Val21 and Val31 using string compare".


        • C, OnNotInRangeGotoBlockID, "NoError", 100, 200, 500
          Goto "NoError" since 100 is not numerically between 200 and 500".


        • C, OnNotInRangeGotoBlockID, "NoError", ^Val1, ^Val2, ^Val3
          Goto "NoError" if DDVarialbe ^Val1 is within DDVariable ^Val2 and DDVariable ^Val3.


        [How To Read This Reference]

        DDDriverFlowCommands::OnNotLessThanGotoBlockID
        TID

        Goto the named block if value1 is NOT less than value2.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Value1
          The value that should be NOT less than VALUE2.


        3. Value2
          The value that should be equal or less than VALUE1.


        4. [ CaseSensitive = ]
          Set to 'CaseInsensitive' so string comparisons are NOT case-sensitive. String Comparisons are case-sensitive by default.


        Examples:
        • C, OnNotLessThanGotoBlockID, "NoError", Val2, Val1
          Goto the block named "NoError" since string compare of Val2 is NOT less than Val1.


        • C, OnNotLessThanGotoBlockID, "NoError", Val1, Val1
          Goto the block named "NoError" since string compare of Val1 equals Val1.


        • C, OnNotLessThanGotoBlockID, "NoError", Val1, Val2
          Does not branch to "NoError" since string compare of Val1 is less than Val2.


        • C, OnNotLessThanGotoBlockID, "NoError", 200, 100
          Goto block named "NoError" since numerical compare 200 is not less than 100.


        [How To Read This Reference]

        DDDriverFlowCommands::OnPartialMenuItemContainsStateGotoBlockID
        RC

        Goto the named block in the current table if state is part of the state information of the menuitem. This command allows for a partial match of the menu item.


        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to transfer control to if state is part of the state information of the menuitem.


        2. WindowName
          The window name.


        3. ComponentName
          The component name.


        4. MenuItem
          Menu->MenuItem hierarchy string to identify which menu item to test. This menu hierarchy is case-sensitive. to test. This menu hierarchy is case-sensitive.


        5. State
          Expected status string (or part thereof) to verify. Ex: "Enabled Checked" OR "Disabled Grayed" etc. Each item separated by a space will be evaluated separately so the order of the status items does not matter. These status items are case-sensitive.


        Examples:
        • C, OnMenuItemContainsStateGotoBlockID, "NoError", MainWindow, MainWindow, "View->Error", "Disabled"
          Go to the block named "NoError" if the state information for the View->Error menu item contains Disabled.


        [How To Read This Reference]

        DDDriverFlowCommands::OnRegistryKeyExistGotoBlockID
        TID SDC

        Goto the named block in the current table if the Registry Key exists.

        On Windows XP (and higher?) this is accomplished via the REG.EXE provided by the operating system. If this program is NOT available then the Registry commands will not work until another means is implemented--possibly Windows Scripting Host scripts, etc..

        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Key
          The Registry Key to seek.


        3. [ KeyValue = ]
          The optional Registry subkey value to seek.

          The value name under the parent key. If not provided then we just check to see if the provided parent key exists.

        4. [ TimeOut = 15 ]
          Timeout value in seconds before exiting automatically (no branch).


        Examples:
        • C, OnRegistryKeyExistGotoBlockID, IBM_BLOCK, "HKLM\Software\Rational Software\Rational Test\8", "Install Directory", 0
          Go to block IBM_BLOCK if the Install Directory subkey exists right now.


        • C, OnRegistryKeyExistGotoBlockID, RJ_INSTALLED, "HKLM\Software\Rational Software\Rational Test\8", "Rational FT Install Directory"
          Go to block RJ_INSTALLED if the key value comes into existence within the default 15 seconds.


        [How To Read This Reference]

        DDDriverFlowCommands::OnRegistryKeyNotExistGotoBlockID
        TID SDC

        Goto the named block in the current table if the Registry Key does not exist.

        On Windows XP (and higher?) this is accomplished via the REG.EXE provided by the operating system. If this program is NOT available then the Registry commands will not work until another means is implemented--possibly Windows Scripting Host scripts, etc..

        Fields: [ ]=Optional with Default Value
        1. BlockID
          The name of the block to Goto.


        2. Key
          The Registry Key to seek.


        3. [ KeyValue = ]
          The optional Registry subkey value to seek.

          The value name under the parent key. If not provided then we just check to see if the provided parent key exists.

        4. [ TimeOut = 15 ]
          Timeout value in seconds before exiting automatically (no branch).


        Examples:
        • C, OnRegistryKeyNotExistGotoBlockID, NO_RATIONAL, "HKLM\Software\Rational Software\Rational Test\8", "Install Directory", 0
          Go to block NO_RATIONAL if the Install Directory value does not exist.


        • C, OnRegistryKeyNotExistGotoBlockID, NO_RFT, "HKLM\Software\Rational Software\Rational Test\8", "Rational FT Install Directory"
          Go to block NO_RFT if the Rational FT Install Directory value does not come into existence within the default 15 seconds.


        [How To Read This Reference]

        DDDriverFlowCommands::SetExitTableBlock
        RC TID WR

        Set or clear the name of a block to execute when the ExitTable command is encountered.

        Set or clear the name of a block to execute when the ExitTable command is encountered.
        You can reset this to nothing by leaving the BlockID parameter blank or providing an empty BlockID. This reset should be done as part of the ExitTable processing.


        Fields: [ ]=Optional with Default Value
        1. [ BlockID = ]
          The name of the block to Goto when ExitTable is encountered.


        Examples:
        • C, SetExitTableBlock, "ProcessExit"
          Set "ProcessExit" as the block to execute when ExitTable is encountered.


        • C, SetExitTableBlock, ""
          Clear any special ExitTable processing for this test level.


        [How To Read This Reference]

        DDDriverFlowCommands::SetGeneralScriptFailureBlock
        RC TID WR

        Set or clear the name of a block to execute when GeneralScriptFailure occurs.

        Set or clear the name of a block to execute when GeneralScriptFailure occurs.
        Status is evaluated after the completion of every record in a table.

        You can reset this to nothing by leaving the BlockID parameter blank or providing an empty BlockID.



        Fields: [ ]=Optional with Default Value
        1. [ BlockID = ]
          The name of the block to Goto on status GeneralScriptFailure.


        Examples:
        • C, SetGeneralScriptFailureBlock, "ErrorHandler"
          Set "ErrorHandler" as the block to execute on the next GeneralScriptFailure.


        • C, SetGeneralScriptFailureBlock, ""
          Continue normal execution on subsequent GeneralScriptFailure.


        [How To Read This Reference]

        DDDriverFlowCommands::SetInvalidFileIOBlock
        RC TID WR

        Set or clear the name of a block to execute when InvalidFileIO occurs.

        Set or clear the name of a block to execute when InvalidFileIO occurs.
        Status is evaluated after the completion of every record in a table.

        You can reset this to nothing by leaving the BlockID parameter blank or providing an empty BlockID.

        Note, an InvalidFileIO generated from the test table itself will not be processed by this block. In general, that would not be possible because the FileIO error likely means the table cannot be processed.



        Fields: [ ]=Optional with Default Value
        1. [ BlockID = ]
          The name of the block to Goto on status InvalidFileIO.


        Examples:
        • C, SetInvalidFileIOBlock, "IOHandler"
          Set "IOHandler" as the block to execute on the next InvalidFileIO.


        • C, SetInvalidFileIOBlock, ""
          Continue normal execution on subsequent InvalidFileIO.


        [How To Read This Reference]

        DDDriverFlowCommands::SetNoScriptFailureBlock
        RC TID WR

        Set or clear the name of a block to execute when NoScriptFailure occurs.

        Set or clear the name of a block to execute when NoScriptFailure occurs.
        Status is evaluated after the completion of every record in a table. So event the simple logging of message can return NoScriptFailure.

        This block setting is automatically cleared when a jump is executed as a result of this condition. This command is generally used immediately before the record you expect to pass or fail. You can reset this to nothing by leaving the BlockID parameter blank or providing an empty BlockID.



        Fields: [ ]=Optional with Default Value
        1. [ BlockID = ]
          The name of the block to Goto on status NoScriptFailure.


        Examples:
        • C, SetNoScriptFailureBlock, "NoError"
          Set "NoError" as the block to execute on the next NoScriptFailure.


        • C, SetNoScriptFailureBlock, ""
          Continue normal execution on subsequent NoScriptFailure.


        [How To Read This Reference]

        DDDriverFlowCommands::SetScriptNotExecutedBlock
        RC TID WR

        Set or clear the name of a block to execute when ScriptNotExecuted occurs.

        Set or clear the name of a block to execute when ScriptNotExecuted occurs.
        Status is evaluated after the completion of every record in a table. In general, ScriptNotExecuted only occurs when the drivers are not able to be invoked or StepDriver cannot properly locate GUI items or the functions to process them.

        You can reset this to nothing by leaving the BlockID parameter blank or providing an empty BlockID.



        Fields: [ ]=Optional with Default Value
        1. [ BlockID = ]
          The name of the block to Goto on status ScriptNotExecuted.


        Examples:
        • C, SetScriptNotExecutedBlock, "AbortHandler"
          Set "AbortHandler" as the block to execute on the next ScriptNotExecuted.


        • C, SetScriptNotExecutedBlock, ""
          Continue normal execution on subsequent ScriptNotExecuted.


        [How To Read This Reference]

        DDDriverFlowCommands::SetScriptWarningBlock
        RC TID WR

        Set or clear the name of a block to execute when ScriptWarning occurs.

        Set or clear the name of a block to execute when ScriptWarning occurs.
        Status is evaluated after the completion of every record in a table.

        You can reset this to nothing by leaving the BlockID parameter blank or providing an empty BlockID.



        Fields: [ ]=Optional with Default Value
        1. [ BlockID = ]
          The name of the block to Goto on status ScriptWarning.


        Examples:
        • C, SetScriptWarningBlock, "WarningHandler"
          Set "WarningHandler" as the block to execute on the next ScriptWarning.


        • C, SetScriptWarningBlock, ""
          Continue normal execution on subsequent ScriptWarning.


        [How To Read This Reference]

        DDDriverFlowCommands::UseLocalFlowControl
        TID

        When TRUE then flow control block IDs have current table scope only.

        By default, flow control block IDs provided with the SetXXXBlock commands have test level scope. That is, a block ID set stays in effect for all test tables at that test level until the block ID is changed or cleared.

        By setting UseLocalFlowControl=TRUE then any flow control block ID set has only local scope. It is only valid for the currently executing table.

        Note, if no parameter is provided the parameter will default to TRUE.



        Fields: [ ]=Optional with Default Value
        1. [ State = TRUE ]
          The TRUE or FALSE value to use.

          If no value is provided then "TRUE" will be assumed.

        Examples:
        • C, UseLocalFlowControl
          Use/Set local flow control blockIDs only.


        • C, UseLocalFlowControl, TRUE
          Use/Set local flow control blockIDs only.


        • C, UseLocalFlowControl, FALSE
          Use/Set standard test level scope blockIDs.


        [How To Read This Reference]