Difference between revisions of "Test Cases in XML"

From GXtest Wiki
Jump to: navigation, search
(Parameters)
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
{{Idiomas
+
{{Idiomas| Test Cases - XML| Test Cases in XML| XML 形式のテストケース}}
| Test Cases - XML
+
| Test Cases in XML
+
}}
+
 
[[category:GXtest Guides]]
 
[[category:GXtest Guides]]
 
__NOTOC__
 
__NOTOC__
Line 344: Line 341:
 
# Boolean: it is a boolean value so it can be true or false
 
# Boolean: it is a boolean value so it can be true or false
 
# SelectionByRow: it specifies a row number to select. This number can be given as fixed Value, Variable or Datapool
 
# SelectionByRow: it specifies a row number to select. This number can be given as fixed Value, Variable or Datapool
# SelectionByControl: it specifies a criteria to select a raw. This criteria is based on the value of a column in a grid. In order to do that you must specify:
+
# SelectionByControl: it specifies a criteria to select a row. This criteria is based on the value of a column in a grid. In order to do that you must specify:
 
## the GeneXus control to compare (through a parameter of type GX Control)
 
## the GeneXus control to compare (through a parameter of type GX Control)
## the comparison to make, it can be comparation of text type or number type, and acording to that you can make different comparations, as equality, difference, grather than, contains, starts with, etc.
+
## the comparison to make, it can be comparison of text type or number type, and according to that you can make different comparison, as equality, difference, greater than, contains, starts with, etc.
  
  

Latest revision as of 03:43, 21 February 2014

Spanish.gif
English.gif
Japan.gif


The current GXtest version supports to export a test case to XML. This functionality is described in this article. Through this XML you can generate a test case as complex as you want, with Datapools, custom commands, recursion, etc.


But there is another XML format to describe a test case that is much simpler and for that reason maybe a simple way is to generate test cases by external tools


Test cases with the simplified XML

This XML has the following form:

<GXTestCase>
   <Node Object="ObjectName" ObjectType="WebPanel|Transaction" title="title">
      <CommandName1 atributos>
         <Parameter1>
         </Parameter1>
         <Parameter2>
         </Parameter2>
      </CommandName1>
      ....//more commands
   </Node>
   ....//more nodes
</GXTestCase>

Node elements

Node type elements represent a page of the application, for this reason have associated the main object that displays that page. You must specify the object name (Object attribute) type (attribute ObjectType) and title (title attribute). For each of these elements a node in the graph of test case will be created in GXtest. Commands that the node have are actions, validations or events that are made within that object. The last event will be made to make transition to join the current object to the next.

Commands

Commands are represented as XML elements with the name of each command. According to the command there are different attributes and parameters to be indicated.

Here are some of the existing commands and their corresponding XML elements

        <Back Type="Event">
            <Boolean Value="false" />
        </Back>
        <VerifyControlEnable Type="Validation">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <Boolean Value="false" />
            <Boolean Value="false" />
        </VerifyControlEnable>
        <VerifyControlVisible Type="Validation">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <Boolean Value="false" />
            <Boolean Value="false" />
        </VerifyControlVisible>
        <TableOrderedBy Type="Validation">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <Boolean Value="false" />
            <Boolean Value="false" />
        </TableOrderedBy>
        <TableRowsNumber Type="Validation">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <Value Value="1" />
            <Boolean Value="false" />
            <Boolean Value="false" />
        </TableRowsNumber>
        <ClickPortalMenu Type="Event">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
        </ClickPortalMenu>
        <DummyEvent Type="Event" />
        <LoginPortal Type="Event">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
            <Variable VariableName="VariableName" />
        </LoginPortal>
        <Close Type="Event">
            <Boolean Value="false" />
        </Close>
        <ClickToolbarButton Type="Event">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
            <Variable VariableName="VariableName" />
        </ClickToolbarButton>
        <SelectRow Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
                <ControlGX Name="ControlName">
                    <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
                </ControlGX>
                <Value Value="1" />
            </SelectionByControl>
        </SelectRow>
        <ClickTreeMenu Type="Event">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
            <Variable VariableName="VariableName" />
        </ClickTreeMenu>
        <AppearText Type="Validation">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
            <Boolean Value="false" />
            <Boolean Value="false" />
        </AppearText>
        <VerifyControlText Type="Validation">
            <Boolean Value="false" />
            <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
                <ControlGX Name="ControlName">
                    <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
                </ControlGX>
                <Value Value="1" />
            </SelectionByControl>
            <Boolean Value="false" />
            <Value Value="1" />
        </VerifyControlText>
        <VerifyControlTextTable Type="Validation">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <SelectionByRow>
                <Value Value="1" />
            </SelectionByRow>
            <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
                <ControlGX Name="ControlName">
                    <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
                </ControlGX>
                <Value Value="1" />
            </SelectionByControl>
            <Boolean Value="false" />
            <Boolean Value="false" />
        </VerifyControlTextTable>
        <Click Type="Event">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </Click>
        <ClickTable Type="Event">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
                <ControlGX Name="ControlName">
                    <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
                </ControlGX>
                <Value Value="1" />
            </SelectionByControl>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </ClickTable>
        <ClickLinkByCaption Type="Event">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <Variable VariableName="VariableName" />
        </ClickLinkByCaption>
        <FillInput Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <Variable VariableName="VariableName" />
        </FillInput>
        <FillInputTable Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
                <ControlGX Name="ControlName">
                    <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
                </ControlGX>
                <Value Value="1" />
            </SelectionByControl>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <Variable VariableName="VariableName" />
        </FillInputTable>
        <GoAndLogin Type="Event">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
            <Variable VariableName="VariableName" />
            <Variable VariableName="VariableName" />
        </GoAndLogin>
        <Go Type="Event">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
        </Go>
        <ClickPrompt Type="Event">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </ClickPrompt>
        <ClickPromptTable Type="Event">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
                <ControlGX Name="ControlName">
                    <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
                </ControlGX>
                <Value Value="1" />
            </SelectionByControl>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </ClickPromptTable>
        <SelectCombo Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <Variable VariableName="VariableName" />
        </SelectCombo>
        <SelectComboInTable Type="Action">
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <SelectionByRow>
                <Value Value="1" />
            </SelectionByRow>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />
        </SelectComboInTable>
        <Check Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </Check>
        <UnCheck Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </UnCheck>
        <Choose Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />
        </Choose>
        <GetValue Type="Action">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </GetValue>
        <GetValueTable Type="Action">
            <Boolean Value="false" />
            <Variable VariableName="VariableName" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
                <ControlGX Name="ControlName">
                    <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
                </ControlGX>
                <Value Value="1" />
            </SelectionByControl>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </GetValueTable>
        <CheckTable Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <SelectionByRow>
                <Value Value="1" />
            </SelectionByRow>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </CheckTable>
        <UnCheckTable Type="Action">
            <Boolean Value="false" />
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>
        </UnCheckTable>
        <DPCompare Type="Validation">
            <Boolean Value="false" />
            <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />
            <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />
            <Boolean Value="false" />
            <Boolean Value="false" />
        </DPCompare>
        <DPNext Type="Action">
            <Boolean Value="false" />
            <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />
        </DPNext>
        <DPReset Type="Action">
            <Boolean Value="false" />
            <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />
        </DPReset>

Parameters

There are the following types of parameters in GXtest:

  1. Control GX: it references a GeneXus control within a GeneXus object
  2. Value: it is a fixed value, string or integer
  3. Datapool: it is a value obtained from a datapool
  4. Variable: it is a variable dynamically loaded during the execution of the test case
  5. Boolean: it is a boolean value so it can be true or false
  6. SelectionByRow: it specifies a row number to select. This number can be given as fixed Value, Variable or Datapool
  7. SelectionByControl: it specifies a criteria to select a row. This criteria is based on the value of a column in a grid. In order to do that you must specify:
    1. the GeneXus control to compare (through a parameter of type GX Control)
    2. the comparison to make, it can be comparison of text type or number type, and according to that you can make different comparison, as equality, difference, greater than, contains, starts with, etc.


Each of these parameters has an associated XML element. Below is an example of each

GX Control parameter

        <ControlGX Name="ControlName">
            <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
        </ControlGX>        

Value parameter

        <Value Value="1" />

Datapool parameter

        <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />

Variable parameter

        <Variable VariableName="VariableName" />

Boolean parameter

        < Boolean Value="true" />

SelectionByRow parameter

        <SelectionByRow>
            <Value Value="1" />
        </SelectionByRow>

SelectionByControl parameter

        <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
            <ControlGX Name="ControlName">
                <ObjectGX KBName="KBName" Name="ObjectName" Type="WebPanel" />
            </ControlGX>        
            <Value Value="1" />
        </SelectionByControl>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:simpleType name="CommandsType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Event" />
            <xs:enumeration value="Action" />
            <xs:enumeration value="Validation" />
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="GXTestCase">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Node" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Node">
        <xs:complexType>
            <xs:all>
                <xs:element ref="Back" />
                <xs:element ref="VerifyControlEnable" />
                <xs:element ref="VerifyControlVisible" />
                <xs:element ref="TableOrderedBy" />
                <xs:element ref="TableRowsNumber" />
                <xs:element ref="ClickPortalMenu" />
                <xs:element ref="DummyEvent" />
                <xs:element ref="LoginPortal" />
                <xs:element ref="Close" />
                <xs:element ref="ClickToolbarButton" />
                <xs:element ref="SelectRow" />
                <xs:element ref="ClickTreeMenu" />
                <xs:element ref="AppearText" />
                <xs:element ref="VerifyControlText" />
                <xs:element ref="VerifyControlTextTable" />
                <xs:element ref="Click" />
                <xs:element ref="ClickTable" />
                <xs:element ref="ClickLinkByCaption" />
                <xs:element ref="FillInput" />
                <xs:element ref="FillInputTable" />
                <xs:element ref="GoAndLogin" />
                <xs:element ref="Go" />
                <xs:element ref="ClickPrompt" />
                <xs:element ref="ClickPromptTable" />
                <xs:element ref="SelectCombo" />
                <xs:element ref="SelectComboInTable" />
                <xs:element ref="Check" />
                <xs:element ref="UnCheck" />
                <xs:element ref="Choose" />
                <xs:element ref="GetValue" />
                <xs:element ref="GetValueTable" />
                <xs:element ref="CheckTable" />
                <xs:element ref="UnCheckTable" />
                <xs:element ref="DPCompare" />
                <xs:element ref="DPNext" />
                <xs:element ref="DPReset" />
            </xs:all>
            <xs:attribute name="Object" type="xs:string" use="required" />
            <xs:attribute name="Type" type="xs:string" use="required" />
            <xs:attribute name="Title" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Boolean">
        <xs:complexType>
            <xs:attribute name="Value" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Value">
        <xs:complexType>
            <xs:attribute name="Value" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Variable">
        <xs:complexType>
            <xs:attribute name="VariableName" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="DataPool">
        <xs:complexType>
            <xs:attribute name="DataPoolName" type="xs:string" use="required" />
            <xs:attribute name="DataPoolColumnName" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="SelectionByControl">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ControlGX" />
                <xs:element ref="Value" />
            </xs:sequence>
            <xs:attribute name="ComparatorType" type="xs:string" use="required" />
            <xs:attribute name="Comparator" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="SelectionByRow">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Value">
                    <xs:complexType>
                        <xs:attribute name="Value" type="xs:unsignedByte" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Back">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="VerifyControlEnable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="VerifyControlVisible">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="TableOrderedBy">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="TableRowsNumber">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ClickPortalMenu">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="DummyEvent">
        <xs:complexType>
            <xs:sequence />
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="LoginPortal">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Close">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ClickToolbarButton">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="SelectRow">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByRow" />
                    <xs:element ref="SelectionByControl" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ClickTreeMenu">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="AppearText">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="VerifyControlText">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="VerifyControlTextTable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                    <xs:element ref="SelectionByRow" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Click">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ClickTable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                    <xs:element ref="SelectionByRow" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ClickLinkByCaption">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="FillInput">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="FillInputTable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                    <xs:element ref="SelectionByRow" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="GoAndLogin">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Go">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ClickPrompt">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ClickPromptTable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                    <xs:element ref="SelectionByRow" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="SelectCombo">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="SelectComboInTable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                    <xs:element ref="SelectionByRow" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Check">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="UnCheck">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Choose">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="GetValue">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Variable" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="GetValueTable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Variable" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByRow" />
                    <xs:element ref="SelectionByControl" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="CheckTable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                    <xs:element ref="SelectionByRow" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="UnCheckTable">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                    <xs:element ref="SelectionByRow" />
                    <xs:element ref="ControlGX" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="SelectionByControl" />
                    <xs:element ref="SelectionByRow" />
                    <xs:element ref="ControlGX" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="DPCompare">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Value" />
                    <xs:element ref="Variable" />
                    <xs:element ref="DataPool" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="DPNext">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="DPReset">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="Boolean" />
                </xs:choice>
                <xs:choice>
                    <xs:element ref="DataPool" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="Type" type="CommandsType" use="required" />
        </xs:complexType>
    </xs:element>
</xs:schema>