Difference between revisions of "Test Cases - XML"

From GXtest Wiki
Jump to: navigation, search
Line 1: Line 1:
 +
{{Idiomas
 +
| Test Cases - XML
 +
| Test Cases in XML
 +
}}
 
[[category:Guías de GXtest]]
 
[[category:Guías de GXtest]]
 
__NOTOC__
 
__NOTOC__

Revision as of 19:32, 15 August 2013

Spanish.gif
English.gif
link= {{{3}}}

La versión actual GXtest soporta exportar un test case a XML. Esta funcionalidad está descrita en este artículo. A través de dicho XML se puede generar un caso de prueba tan complejo como se quiera, con DataPools, custom commands, recursiones, etc.


Sin embargo existe otro formato de XML para describir un caso de prueba que es mucho más simple y por ese motivo puede ser un camino sencillo para la generación de casos de prueba por herramientas externas.

Casos de prueba en XML simplificado

Este XML tiene la siguiente forma:

<GXTestCase>
   <Node Object="NombreObjeto" ObjectType="WebPanel|Transaction" title="Titulo">
      <NombreComando1 atributos>
         <Parametro1>
         </Parametro1>
         <Parametro2>
         </Parametro2>
      </NombreComando1>
      ....//mas comandos
   </Node>
   ....//mas nodos
</GXTestCase>

Los Nodos (elemento Node)

Los elementos de tipo Node representan una pagina de la aplicación, por este motivo tienen asociado el objeto principal que muestra esa página. De dicho objeto se especifica el nombre (atributo Object) el tipo (atributo ObjectType) y el título (atributo title). Por cada uno de estos elementos se va a crear un nodo en el grafo del caso de prueba en GXtest. Los comandos que tienen el nodo son acciones, validaciones o eventos que se hacen dentro de ese objeto. El último evento realizado será el que haga unan transición de el objeto actual al próximo.

Los Comandos

Los comandos son representados con elementos XML que llevan el nombre de cada comando. Según el comando los atributos y parámetros que se deben indicar.

A continuación se muestran algunos de los comandos existentes y sus elementos XML correspondientes

        <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>

Los Parametros

Existen los siguientes tipo de parámetros en GXtest:

  1. Control GX: referencia a un control GeneXus dentro de un objeto GeneXus
  2. Valor: es un valor fijo ya sea string o entero
  3. DataPool: es un valor que se obtiene de un datapool
  4. Variable: es una variable que se carga dinamincamente durante la ejecución del caso de prueba
  5. Boolean: es un valor booleano por lo que puede ser verdadero o falso
  6. SelectionByRow: especifica un número de fila a seleccionar. Ese numero de fila puede ser pasado con un parametro Valor, Variable o DataPool
  7. SelectionByControl: especifica un criterio para seleccionar unan fila. Ese criterio es en base al valor de una columna en una grilla. Para esto se especifica:
    1. cual es el control GeneXus que se va a comparar (a través de un parámetro del tipo Control GX)
    2. cual es el comparador que se va a usar, puede ser un comparador de tipo texto o numérico y dependiendo del tipo de comparador se pueden hacer comparaciones de igualdad, diferencia, mayor o menor o de contenido, empieza con, etc. para el caso de texto.

Cada uno de estos parámetros tiene un elemento XML asociado. A continuación se muestra un ejemplo de cada uno:
Parámetro Control GX

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

Parámetro Valor

        <Value Value="1" />

Parámetro DataPool

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

Parámetro Variable

        <Variable VariableName="VariableName" />

Parámetro Boolean

        < Boolean Value="true" />

Parámetro SelectionByRow

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

Parámetro SelectionByControl

        <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>