Difference between revisions of "Test Cases in XML"

From GXtest Wiki
Jump to: navigation, search
m (Reverted edits by Amyjumyhawu (Talk) to last version by Ftoledo)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
{{Idiomas| Test Cases - XML| Test Cases in XML| XML 形式のテストケース}}
 
[[category:GXtest Guides]]
 
[[category:GXtest Guides]]
 
__NOTOC__
 
__NOTOC__
  
  
We are working to translate this page.
+
The current GXtest version supports to export a test case to XML. This functionality is described in [[Exporting and Importing a Test Case | 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
  
  
La versión actual GXtest soporta exportar un test case a XML. Esta funcionalidad está descrita en  [[Exportar e Importar un TestCase|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.
+
== Test cases with the simplified XML ==
  
 +
This XML has the following form:
  
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:
 
 
<pre>
 
<pre>
 
<GXTestCase>
 
<GXTestCase>
   <Node Object="NombreObjeto" ObjectType="WebPanel|Transaction" title="Titulo">
+
   <Node Object="ObjectName" ObjectType="WebPanel|Transaction" title="title">
       <NombreComando1 atributos>
+
       <CommandName1 atributos>
         <Parametro1>
+
         <Parameter1>
         </Parametro1>
+
         </Parameter1>
         <Parametro2>
+
         <Parameter2>
         </Parametro2>
+
         </Parameter2>
       </NombreComando1>
+
       </CommandName1>
       ....//mas comandos
+
       ....//more commands
 
   </Node>
 
   </Node>
   ....//mas nodos
+
   ....//more nodes
 
</GXTestCase>
 
</GXTestCase>
 
</pre>
 
</pre>
  
=== Los Nodos (elemento Node) ===
+
=== Node elements ===
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).
+
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).
Por cada uno de estos elementos se va a crear un nodo en el grafo del caso de prueba en GXtest.
+
For each of these elements a node in the graph of test case will be created in 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.
+
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.
  
=== Los Comandos ===
+
Here are some of the existing commands and their corresponding XML elements
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
 
 
<pre>
 
<pre>
 
         <Back Type="Event">
 
         <Back Type="Event">
Line 333: Line 332:
 
         </DPReset></pre>
 
         </DPReset></pre>
  
=== Los Parametros ===  
+
=== Parameters ===  
 +
 
 +
There are the following types of parameters in GXtest:
 +
# Control GX: it references a GeneXus control within a GeneXus object
 +
# Value: it is a fixed value, string or integer
 +
# Datapool: it is a value obtained from a datapool
 +
# Variable: it is a variable dynamically loaded during the execution of the test case
 +
# 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
 +
# 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 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.
 +
 
  
Existen los siguientes tipo de parámetros en GXtest:
+
Each of these parameters has an associated XML element.
# Control GX: referencia a un control GeneXus dentro de un objeto GeneXus
+
Below is an example of each
# Valor: es un valor fijo ya sea string o entero
+
# DataPool: es un valor que se obtiene de un datapool
+
# Variable: es una variable que se carga dinamincamente durante la ejecución del caso de prueba
+
# Boolean: es un valor booleano por lo que puede ser verdadero o falso
+
# SelectionByRow: especifica un número de fila a seleccionar. Ese numero de fila puede ser pasado con un parametro Valor, Variable o DataPool
+
# 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:
+
## cual es el control GeneXus que se va a comparar (a través de un parámetro del tipo Control GX)
+
## 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.
+
''' GX Control parameter'''
A continuación se muestra un ejemplo de cada uno:<br>
+
''' Parámetro Control GX'''
+
 
<pre>
 
<pre>
 
         <ControlGX Name="ControlName">
 
         <ControlGX Name="ControlName">
Line 354: Line 355:
 
         </ControlGX>         
 
         </ControlGX>         
 
</pre>
 
</pre>
''' Parámetro Valor '''
+
''' Value parameter '''
 
<pre>
 
<pre>
 
         <Value Value="1" />
 
         <Value Value="1" />
 
</pre>
 
</pre>
''' Parámetro DataPool '''
+
''' Datapool parameter '''
 
<pre>
 
<pre>
 
         <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />
 
         <DataPool DataPoolName="DataPoolName" DataPoolColumnName="DataPoolColumn" />
 
</pre>
 
</pre>
''' Parámetro Variable '''
+
''' Variable parameter '''
 
<pre>
 
<pre>
 
         <Variable VariableName="VariableName" />
 
         <Variable VariableName="VariableName" />
 
</pre>
 
</pre>
''' Parámetro Boolean '''
+
''' Boolean parameter '''
 
<pre>
 
<pre>
 
         < Boolean Value="true" />
 
         < Boolean Value="true" />
 
</pre>
 
</pre>
''' Parámetro SelectionByRow '''
+
''' SelectionByRow parameter '''
 
<pre>
 
<pre>
 
         <SelectionByRow>
 
         <SelectionByRow>
Line 376: Line 377:
 
         </SelectionByRow>
 
         </SelectionByRow>
 
</pre>
 
</pre>
''' Parámetro SelectionByControl '''
+
''' SelectionByControl parameter '''
 
<pre>
 
<pre>
 
         <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">
 
         <SelectionByControl ComparatorType="ComparatorStr" Comparator="contains">

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>