Dividing the Recorded Script into Several Routines
Let’s take a look at the recorded code:
JavaScript, JScript
function Test1()
{
var orders;
var mainForm;
var orderForm;
var groupBox;
var numericUpDown;
var textBox;
// Launching the Orders application
TestedApps.RunAll();
// Opening the Order form
orders = Aliases.Orders;
mainForm = orders.MainForm;
mainForm.MainMenu.Click("Orders|New order...");
// Populating the Order form
orderForm = orders.OrderForm;
groupBox = orderForm.Group;
groupBox.ProductNames.ClickItem("FamilyAlbum");
numericUpDown = groupBox.Quantity;
numericUpDown.Click(8, 7);
numericUpDown.wValue = 20;
groupBox.Date.wDate = "5/6/2005";
textBox = groupBox.Customer;
textBox.Click(69, 12);
textBox.wText = "John Smith Jr";
textBox = groupBox.Street;
textBox.Click(4, 8);
textBox.wText = "12, Orange Blvd";
textBox = groupBox.City;
textBox.Click(12, 14);
textBox.wText = "Grovetown, CA";
textBox = groupBox.State;
textBox.Click(21, 6);
textBox.wText = "US";
textBox = groupBox.Zip;
textBox.Click(14, 14);
textBox.wText = "111155";
groupBox.MasterCard.ClickButton();
textBox = groupBox.CardNo;
textBox.Click(35, 15);
textBox.wText = "555777555888";
groupBox.ExpDate.wDate = "5/6/2005";
// Creating checkpoints
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, "$80", false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, "15%", false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, "1360", false);
// Closing the Order form
orderForm.ButtonOK.ClickButton();
// Closing the application
mainForm.Close();
orders.dlgConfirmation.btnNo.ClickButton();
}
Python
def Test1():
#Launching the tested application
TestedApps.RunAll()
#Opening the Order form
orders = Aliases.Orders
mainForm = orders.MainForm
mainForm.MainMenu.Click("Orders|New order...")
#Populating the Order form
orderForm = orders.OrderForm;
groupBox = orderForm.Group;
groupBox.ProductNames.ClickItem("FamilyAlbum")
numericUpDown = groupBox.Quantity
numericUpDown.Click(8, 7)
numericUpDown.wValue = 20
groupBox.Date.wDate = "5/6/2005"
textBox = groupBox.Customer
textBox.Click(69, 12)
textBox.settext("John Smith Jr")
textBox = groupBox.Street
textBox.Click(4, 8)
textBox.wText = "12, Orange Blvd"
textBox = groupBox.City
textBox.Click(12, 14)
textBox.wText = "Grovetown, CA"
textBox = groupBox.State
textBox.Click(21, 6)
textBox.wText = "US"
textBox = groupBox.Zip
textBox.Click(14, 14)
textBox.wText = "111155"
groupBox.MasterCard.ClickButton()
textBox = groupBox.CardNo
textBox.Click(35, 15)
textBox.wText = "555777555888"
groupBox.ExpDate.wDate = "5/6/2005"
#Creating checkpoints
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, "$80")
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, "15%")
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, "1360")
#Closing the Orders form
orderForm.ButtonOK.ClickButton()
#Closing the Orders application
mainForm.Close()
orders.dlgConfirmation.btnNo.ClickButton()
VBScript
Sub Test1
Dim orders
Dim mainForm
Dim orderForm
Dim groupBox
Dim numericUpDown
Dim textBox
' Launching the Orders application
TestedApps.RunAll
' Opening the Order form
Set orders = Aliases.Orders
Set mainForm = orders.MainForm
Call mainForm.MainMenu.Click("Orders|New order...")
' Populating the Order form
Set orderForm = orders.OrderForm
Set groupBox = orderForm.Group
Call groupBox.ProductNames.ClickItem("FamilyAlbum")
Set numericUpDown = groupBox.Quantity
Call numericUpDown.Click(37, 9)
numericUpDown.wValue = 20
groupBox.Date.wDate = "5/6/2005"
Set textBox = groupBox.Customer
Call textBox.Click(39, 7)
textBox.wText = "John Smith Jr"
Set textBox = groupBox.Street
Call textBox.Click(66, 7)
textBox.wText = "12, Orange Blvd"
Set textBox = groupBox.City
Call textBox.Click(72, 9)
textBox.wText = "Grovetown, CA"
Set textBox = groupBox.State
Call textBox.Click(98, 9)
textBox.wText = "US"
Set textBox = groupBox.Zip
Call textBox.Click(31, 12)
textBox.wText = "111155"
groupBox.MasterCard.ClickButton
Set textBox = groupBox.CardNo
Call textBox.Click(53, 12)
textBox.wText = "555777555888"
groupBox.ExpDate.wDate = "5/6/2005"
' Creating checkpoints
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, "$80", False)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, "15%", False)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, "1360", False)
' Closing the Order form
orderForm.ButtonOK.ClickButton
' Closing the application
mainForm.Close
orders.dlgConfirmation.btnNo.ClickButton
End Sub
DelphiScript
procedure Test1;
var orders : OleVariant;
var mainForm : OleVariant;
var orderForm : OleVariant;
var groupBox : OleVariant;
var numericUpDown : OleVariant;
var textBox : OleVariant;
begin
// Launching the Orders application
TestedApps.RunAll;
// Opening the Order form
orders := Aliases.Orders;
mainForm := orders.MainForm;
mainForm.MainMenu.Click('Orders|New order...');
// Populating the Order form
orderForm := orders.OrderForm;
groupBox := orderForm.Group;
groupBox.ProductNames.ClickItem('FamilyAlbum');
numericUpDown := groupBox.Quantity;
numericUpDown.Click(37, 9);
numericUpDown.wValue := 20;
groupBox.Date.wDate := '5/6/2005';
textBox := groupBox.Customer;
textBox.Click(67, 17);
textBox.wText := 'John Smith Jr';
textBox := groupBox.Street;
textBox.Click(31, 5);
textBox.wText := '12, Orange Blvd';
textBox := groupBox.City;
textBox.Click(47, 15);
textBox.wText := 'Grovetown, CA';
textBox := groupBox.State;
textBox.Click(82, 4);
textBox.wText := 'US';
textBox := groupBox.Zip;
textBox.Click(10, 8);
textBox.wText := '111155';
groupBox.MasterCard.ClickButton;
textBox := groupBox.CardNo;
textBox.Click(46, 9);
textBox.wText := '555777555888';
groupBox.ExpDate.wDate := '5/6/2005';
// Creating checkpoints
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, 'wText', cmpEqual, '$80', false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, 'wText', cmpEqual, '15%', false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, 'wText', cmpEqual, '1360', false);
// Closing the Order form
orderForm.ButtonOK.ClickButton;
// Closing the application
mainForm.Close;
orders.dlgConfirmation.btnNo.ClickButton;
end;
C++Script, C#Script
function Test1()
{
var orders;
var mainForm;
var orderForm;
var groupBox;
var numericUpDown;
var textBox;
// Launching the Orders application
TestedApps["RunAll"]();
// Opening the Order form
orders = Aliases["Orders"];
mainForm = orders["MainForm"];
mainForm["MainMenu"]["Click"]("Orders|New order...");
// Populating the Order form
orderForm = orders["OrderForm"];
groupBox = orderForm["Group"];
groupBox["ProductNames"]["ClickItem"]("FamilyAlbum");
numericUpDown = groupBox["Quantity"];
numericUpDown["Click"](37, 9);
numericUpDown["wValue"] = 20;
groupBox["Date"]["wDate"] = "5/6/2005";
textBox = groupBox["Customer"];
textBox["Click"](43, 7);
textBox["wText"] = "John Smith Jr";
textBox = groupBox["Street"];
textBox["Click"](31, 11);
textBox["wText"] = "12, Orange Blvd";
textBox = groupBox["City"];
textBox["Click"](24, 6);
textBox["wText"] = "Grovetown, CA";
textBox = groupBox["State"];
textBox["Click"](31, 8);
textBox["wText"] = "US";
textBox = groupBox["Zip"];
textBox["Click"](24, 17);
textBox["wText"] = "111155";
groupBox["MasterCard"]["ClickButton"]();
textBox = groupBox["CardNo"];
textBox["Click"](19, 7);
textBox["wText"] = "555777555888";
groupBox["ExpDate"]["wDate"] = "5/6/2005";
// Creating checkpoints
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["Price"], "wText", cmpEqual, "$80", false);
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["Discount"], "wText", cmpEqual, "15%", false);
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["groupBox1"]["Total"], "wText", cmpEqual, "1360", false);
// Closing the Order form
orderForm["ButtonOK"]["ClickButton"]();
// Closing the application
mainForm["Close"]();
orders["dlgConfirmation"]["btnNo"]["ClickButton"]();
}
Comments divide the recorded code into the parts responsible for executing the Orders application, opening the Order form, populating the form, verifying the output values of the form fields, closing the form, and closing the application. Now we can place each code part in a single routine. These routines will be called from the Main
routine.
Here is the list of routines:
-
The
OpenForm
routine is responsible for opening the Order form. Copy the strings situated under the "Opening the Order form" comment in the recorded code to the body of theOpenForm
routine. The routine will have the following code:JavaScript, JScript
function OpenForm()
{
orders = Aliases.Orders;
mainForm = orders.MainForm;
mainForm.MainMenu.Click("Orders|New order...");
}Python
def OpenForm():
orders = Aliases.Orders
mainForm = orders.MainForm
mainForm.MainMenu.Click("Orders|New order...")VBScript
Sub OpenForm
Set orders = Aliases.Orders
Set mainForm = orders.MainForm
Call mainForm.MainMenu.Click("Orders|New order...")
End SubDelphiScript
procedure OpenForm;
begin
orders := Aliases.Orders;
mainForm := orders.MainForm;
mainForm.MainMenu.Click('Orders|New order...');
end;C++Script, C#Script
function OpenForm()
{
orders = Aliases["Orders"];
mainForm = orders["MainForm"];
mainForm["MainMenu"]["Click"]("Orders|New order...");
} -
The
PopulateForm
routine is responsible for populating the Order form. Copy the strings situated under the "Populating the Order form" comment in the recorded code to the body of thePopulateForm
routine. The routine will have the following code:JavaScript, JScript
function PopulateForm()
{
orderForm = orders.OrderForm;
groupBox = orderForm.Group;
groupBox.ProductNames.ClickItem("FamilyAlbum");
numericUpDown = groupBox.Quantity;
numericUpDown.Click(8, 7);
numericUpDown.wValue = 20;
groupBox.Date.wDate = "5/6/2005";
textBox = groupBox.Customer;
textBox.Click(69, 12);
textBox.wText = "John Smith Jr";
textBox = groupBox.Street;
textBox.Click(4, 8);
textBox.wText = "12, Orange Blvd";
textBox = groupBox.City;
textBox.Click(12, 14);
textBox.wText = "Grovetown, CA";
textBox = groupBox.State;
textBox.Click(21, 6);
textBox.wText = "US";
textBox = groupBox.Zip;
textBox.Click(14, 14);
textBox.wText = "111155";
groupBox.MasterCard.ClickButton();
textBox = groupBox.CardNo;
textBox.Click(35, 15);
textBox.wText = "555777555888";
groupBox.ExpDate.wDate = "5/6/2005";
}Python
def PopulateForm():
orderForm = orders.OrderForm;
groupBox = orderForm.Group;
groupBox.ProductNames.ClickItem("FamilyAlbum")
numericUpDown = groupBox.Quantity
numericUpDown.Click(8, 7)
numericUpDown.wValue = 20
groupBox.Date.wDate = "5/6/2005"
textBox = groupBox.Customer
textBox.Click(69, 12)
textBox.settext("John Smith Jr")
textBox = groupBox.Street
textBox.Click(4, 8)
textBox.wText = "12, Orange Blvd"
textBox = groupBox.City
textBox.Click(12, 14)
textBox.wText = "Grovetown, CA"
textBox = groupBox.State
textBox.Click(21, 6)
textBox.wText = "US"
textBox = groupBox.Zip
textBox.Click(14, 14)
textBox.wText = "111155"
groupBox.MasterCard.ClickButton()
textBox = groupBox.CardNo
textBox.Click(35, 15)
textBox.wText = "555777555888"
groupBox.ExpDate.wDate = "5/6/2005"VBScript
Sub PopulateForm
Set orderForm = orders.OrderForm
Set groupBox = orderForm.Group
Call groupBox.ProductNames.ClickItem("FamilyAlbum")
Set numericUpDown = groupBox.Quantity
Call numericUpDown.Click(37, 9)
numericUpDown.wValue = 20
groupBox.Date.wDate = "5/6/2005"
Set textBox = groupBox.Customer
Call textBox.Click(39, 7)
textBox.wText = "John Smith Jr"
Set textBox = groupBox.Street
Call textBox.Click(66, 7)
textBox.wText = "12, Orange Blvd"
Set textBox = groupBox.City
Call textBox.Click(72, 9)
textBox.wText = "Grovetown, CA"
Set textBox = groupBox.State
Call textBox.Click(98, 9)
textBox.wText = "US"
Set textBox = groupBox.Zip
Call textBox.Click(31, 12)
textBox.wText = "111155"
groupBox.MasterCard.ClickButton
Set textBox = groupBox.CardNo
Call textBox.Click(53, 12)
textBox.wText = "555777555888"
groupBox.ExpDate.wDate = "5/6/2005"
End SubDelphiScript
procedure PopulateForm;
begin
orderForm := orders.OrderForm;
groupBox := orderForm.Group;
groupBox.ProductNames.ClickItem('FamilyAlbum');
numericUpDown := groupBox.Quantity;
numericUpDown.Click(37, 9);
numericUpDown.wValue := 20;
groupBox.Date.wDate := '5/6/2005';
textBox := groupBox.Customer;
textBox.Click(67, 17);
textBox.wText := 'John Smith Jr';
textBox := groupBox.Street;
textBox.Click(31, 5);
textBox.wText := '12, Orange Blvd';
textBox := groupBox.City;
textBox.Click(47, 15);
textBox.wText := 'Grovetown, CA';
textBox := groupBox.State;
textBox.Click(82, 4);
textBox.wText := 'US';
textBox := groupBox.Zip;
textBox.Click(10, 8);
textBox.wText := '111155';
groupBox.MasterCard.ClickButton;
textBox := groupBox.CardNo;
textBox.Click(46, 9);
textBox.wText := '555777555888';
groupBox.ExpDate.wDate := '5/6/2005';
end;C++Script, C#Script
function PopulateForm()
{
orderForm = orders["OrderForm"];
groupBox = orderForm["Group"];
groupBox["ProductNames"]["ClickItem"]("FamilyAlbum");
numericUpDown = groupBox["Quantity"];
numericUpDown["Click"](37, 9);
numericUpDown["wValue"] = 20;
groupBox["Date"]["wDate"] = "5/6/2005";
textBox = groupBox["Customer"];
textBox["Click"](43, 7);
textBox["wText"] = "John Smith Jr";
textBox = groupBox["Street"];
textBox["Click"](31, 11);
textBox["wText"] = "12, Orange Blvd";
textBox = groupBox["City"];
textBox["Click"](24, 6);
textBox["wText"] = "Grovetown, CA";
textBox = groupBox["State"];
textBox["Click"](31, 8);
textBox["wText"] = "US";
textBox = groupBox["Zip"];
textBox["Click"](24, 17);
textBox["wText"] = "111155";
groupBox["MasterCard"]["ClickButton"]();
textBox = groupBox["CardNo"];
textBox["Click"](19, 7);
textBox["wText"] = "555777555888";
groupBox["ExpDate"]["wDate"] = "5/6/2005";
} -
The
Checkpoint
routine is responsible for verifying the output values of the Order form. Copy the strings situated under the "Creating checkpoints" comment in the recorded code to the body of theCheckpoint
routine. The routine will have the following code:JavaScript, JScript
function Checkpoint()
{
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, "$80", false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, "15%", false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, "1360", false);
}Python
def Checkpoint(Driver):
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, "$80", False)
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, "15%", False)
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, "1360", False)VBScript
Sub Checkpoint
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, "$80", False)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, "15%", False)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, "1360", False)
End SubDelphiScript
procedure Checkpoint;
begin
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, 'wText', cmpEqual, '$80', false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, 'wText', cmpEqual, '15%', false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, 'wText', cmpEqual, '1360', false);
end;C++Script, C#Script
function Checkpoint()
{
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["Price"], "wText", cmpEqual, "$80", false);
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["Discount"], "wText", cmpEqual, "15%", false);
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["groupBox1"]["Total"], "wText", cmpEqual, "1360", false);
} -
The
CloseForm
routine is responsible for closing the Order form. Copy the strings situated under the "Closing the Order form" comment in the recorded code to the body of theCloseForm
routine. The routine will have the following code:JavaScript, JScript
function CloseForm()
{
orderForm.ButtonOK.ClickButton();
}Python
def CloseForm(orderForm):
orderForm.ButtonOK.ClickButton()VBScript
Sub CloseForm
orderForm.ButtonOK.ClickButton
End SubDelphiScript
procedure CloseForm;
begin
orderForm.ButtonOK.ClickButton;
end;C++Script, C#Script
function CloseForm()
{
orderForm["ButtonOK"]["ClickButton"]();
} -
The
CloseApplication
routine is responsible for closing the Order form. Copy the strings situated under the " Closing the Order form" comment in the recorded code to the body of theCloseApplication
routine. The routine will have the following code:JavaScript, JScript
function CloseApplication()
{
mainForm.Close();
orders.dlgConfirmation.btnNo.ClickButton();
}Python
def CloseApplication():
mainForm.Close()
orders.dlgConfirmation.btnNo.ClickButton()VBScript
Sub CloseApplication
mainForm.Close
orders.dlgConfirmation.btnNo.ClickButton
End SubDelphiScript
procedure CloseApplication;
begin
mainForm.Close;
orders.dlgConfirmation.btnNo.ClickButton;
end;C++Script, C#Script
function CloseApplication()
{
mainForm["Close"]();
orders["dlgConfirmation"]["btnNo"]["ClickButton"]();
}
The created routines code is now in the rough stages. It’s final modification is displayed below.
Creating the Main
Routine
The routines described above are called from the Main
routine during its execution. Thus, the Main
routine code should contain calls to these routines in the same sequence as they are described. The routine will have the following code:
JavaScript, JScript
function Main()
{
TestedApps.RunAll();
OpenForm();
PopulateForm();
Checkpoint();
CloseForm();
CloseApplication();
}
Python
def Main():
OpenForm()
PopulateForm()
Checkpoint()
CloseForm()
CloseApplication()
VBScript
Sub Main
TestedApps.RunAll
OpenForm
PopulateForm
Checkpoint
CloseForm
CloseApplication
End Sub
DelphiScript
procedure Main;
begin
TestedApps.RunAll;
OpenForm;
PopulateForm;
Checkpoint;
CloseForm;
CloseApplication;
end;
C++Script, C#Script
function Main()
{
TestedApps["RunAll"]();
OpenForm();
PopulateForm();
Checkpoint();
CloseForm();
CloseApplication();
}
Modifying the Main
Routine Code
The references to objects held in the orders, mainForm, orderForm, groupBox
variables are used in several routines called from the Main
one. To access the values of these variables from other routines you should declare them in the Main
routine. The values should also be assigned to these variables in the Main
routine. Move the strings that assign the values to orders
and mainForm
variables from the OpenForm
routine and the strings that assign the values to orderForm
and groupBox
variables from the PopulateForm
routine to the Main
routine.
To access the data storage in the script the string that specifies the DDTDriver
object to be used to access the storage needs to be moved to the beginning of the routine code. This string assigns the reference to a DDTDriver
object to the Driver
variable. This variable also should be declared in the Main
routine.
Pay attention to the value of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\FirstRowHasNames registry key. This key specifies whether the first row of the table is recognized as a header or as data. If you use the first row of the table as a header, you should make sure that the key value is 01. If the first row of the table stores data, the key value should be 00. If a row is not empty, it is considered as the first row. Otherwise, it is ignored. For more information, see Using DDT Drivers. |
To provide multiple test iterations we need to create a loop. The loop body should contain calls of OpenForm
, PopulateForm
, Checkpoints
, and CloseForm
routines. The loop exit condition is the true
value of the DDTDriver.EOF
property. We use one row of a data table per iteration place call of the DDTDriver.Next
method before the end of the loop.
After all modifications the Main
routine has the following code:
JavaScript, JScript
function Main()
{
Driver = DDT.ExcelDriver("../../TestBook.xlsx", "TestSheet", true)
TestedApps.RunAll();
orders = Aliases.Orders;
mainForm = orders.MainForm;
while(!Driver.EOF())
{
OpenForm();
orderForm = orders.OrderForm;
groupBox = orderForm.Group;
PopulateForm();
Checkpoint();
CloseForm();
Driver.Next();
}
CloseApplication();
}
Python
def Main():
Driver = DDT.ExcelDriver("../../../TestBook.xlsx", "TestSheet", True)
TestedApps.RunAll()
orders = Aliases.Orders
mainForm = orders.MainForm
while not Driver.EOF():
OpenForm()
orderForm = orders.OrderForm
groupBox = orderForm.Group
PopulateForm()
Checkpoint()
CloseForm()
Driver.Next()
CloseApplication()
VBScript
Sub Main
Set Driver = DDT.ExcelDriver("../../TestBook.xlsx", "TestSheet", True)
TestedApps.RunAll
Set orders = Aliases.Orders
Set mainForm = orders.MainForm
While Not Driver.EOF
OpenForm
Set orderForm = orders.OrderForm
Set GroupBox = orderForm.Group
PopulateForm
Checkpoint
CloseForm
Driver.Next
Wend
CloseApplication
End Sub
DelphiScript
procedure Main;
begin
Driver := DDT.ExcelDriver('../../TestBook.xlsx', 'TestSheet', true);
TestedApps.RunAll;
orders := Aliases.Orders;
mainForm := orders.MainForm;
while not Driver.EOF do
begin
OpenForm;
orderForm := orders.OrderForm;
groupBox := orderForm.Group;
PopulateForm;
Checkpoint;
CloseForm;
Driver.Next;
end;
CloseApplication;
end;
C++Script, C#Script
function Main()
{
Driver = DDT["ExcelDriver"]("../../TestBook.xlsx", "TestSheet", true)
TestedApps["RunAll"]();
orders = Aliases["Orders"];
mainForm = orders["MainForm"];
while(!Driver["EOF"]())
{
OpenForm();
orderForm = orders["OrderForm"];
groupBox = orderForm["Group"];
PopulateForm();
Checkpoint();
CloseForm();
Driver["Next"]();
}
CloseApplication();
}
The Main
routine is almost ready. You should only paste the input parameters into strings used to call other routines.
Modifying the OpenForm
, PopulateForm
, Checkpoint
, CloseForm
, CloseApplication
Routines
The values of the variables declared in the Main
routine are used in other routines. You should declare each variable used in a routine as its input parameter, with the exception of the numericUpDown
and textBox
variables. The numericUpDown
and textBox
variables are used in the PopulateForm
routine only. That is why these variables should be declared as local variables in the PopulateForm
routine. Thus routines will have the following input parameters: OpenForm(mainForm)
, PopulateForm(groupBox)
, Checkpoint()
, CloseForm(orderForm)
, CloseApplication(orders, mainForm)
. But the PopulateForm
and Checkpoint
routines will have one more input parameter. It will be described in the next section of this topic.
The strings used to assign values to the orders
, mainForm
, orderForm
, groupBox
variables are moved from the OpenForm
and PopulateForm
routines to the Main
routine.
Retrieving Data from the Storage
The driver used to access the data storage is specified in the Main
routine. To use this driver in the PopulateForm
and Checkpoint
routines, declare Driver
as an input parameter. To populate the Order form with values retrieved from the data storage you should modify the PopulateForm
routine code. Change the values specified while recording the script, to calls of the Driver.Value
property with the appropriate index. You can find the values and the indexes in the following table:
Field name | Recorded value | Driver.Value property |
---|---|---|
Customer | "John Smith Jr" | Driver.Value(0) |
Product | "FamilyAlbum" | Driver.Value(1) |
Quantity | "20" | Driver.Value(2) |
Date | "06.05.2005" | Driver.Value(3) |
Street | "12, Orange Blvd" | Driver.Value(4) |
City | "Grovetown, CA" | Driver.Value(5) |
State | "US" | Driver.Value(6) |
ZIP | "111155" | Driver.Value(7) |
Card No | "555777555888" | Driver.Value(9) |
Expiration Date | "06.05.2005" | Driver.Value(10) |
Note: | You may want to set the data type of a value explicitly. In this case, see the Retrieving Input Data From Storage topic. |
In addition you should change the groupBox.MasterCard.ClickButton
line in the routine code. This line is used to check an option button. Use the WinFormsObject(Driver.Value(8))
object instead of the MasterCard
one. It allows you to check the object specified by name. The name of the option button is specified by the Driver.Value(8)
property.
To compare the output values of Order form fields with values retrieved from the data storage you should modify the Checkpoint
routine code. Change the values specified, while recording the script, to calls of the Driver.Value
property with the appropriate index. You can find the values and the appropriate Driver.Value
property indexes in the following table:
Field name | Recorded value | Driver.Value property |
---|---|---|
Price per unit | "$80" | Driver.Value(11) |
Discount | "15%" | Driver.Value(12) |
Total | "1360" | Driver.Value(13) |
Thus the PopulateForm
and Checkpoint
routines will have the following code:
JavaScript, JScript
function PopulateForm(groupBox, Driver)
{
var numericUpDown, textBox;
groupBox.ProductNames.ClickItem(Driver.Value(1));
numericUpDown = groupBox.Quantity;
numericUpDown.Click(8, 7);
numericUpDown.wValue = Driver.Value(2);
groupBox.Date.wDate = Driver.Value(3);
textBox = groupBox.Customer;
textBox.Click(69, 12);
textBox.wText = Driver.Value(0);
textBox = groupBox.Street;
textBox.Click(4, 8);
textBox.wText = Driver.Value(4);
textBox = groupBox.City;
textBox.Click(12, 14);
textBox.wText = Driver.Value(5);
textBox = groupBox.State;
textBox.Click(21, 6);
textBox.wText = Driver.Value(6);
textBox = groupBox.Zip;
textBox.Click(14, 14);
textBox.wText = Driver.Value(7);
groupBox.WinFormsObject(Driver.Value(8)).ClickButton();
textBox = groupBox.CardNo;
textBox.Click(35, 15);
textBox.wText = Driver.Value(9);
groupBox.ExpDate.wDate = Driver.Value(10);
}
function Checkpoint(Driver)
{
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, Driver.Value(11), false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual,Driver.Value(12), false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, Driver.Value(13), false);
}
Python
def PopulateForm():
groupBox.ProductNames.ClickItem(Driver.Value[1])
numericUpDown = groupBox.Quantity
numericUpDown.Click(8, 7)
numericUpDown.wValue = Driver.Value[2]
groupBox.Date.wDate = Driver.Value[3]
textBox = groupBox.Customer
textBox.Click(69, 12)
textBox.wText = Driver.Value[0]
textBox = groupBox.Street
textBox.Click(4, 8)
textBox.wText = Driver.Value[4]
textBox = groupBox.City
textBox.Click(12, 14)
textBox.wText = Driver.Value[5]
textBox = groupBox.State
textBox.Click(21, 6)
textBox.wText = Driver.Value[6]
textBox = groupBox.Zip
textBox.Click(14, 14)
textBox.wText = Driver.Value[7]
groupBox.WinFormsObject(Driver.Value[8]).ClickButton()
textBox = groupBox.CardNo
textBox.Click(35, 15)
textBox.wText = Driver.Value[9]
groupBox.ExpDate.wDate = Driver.Value[10]
def Checkpoint(Driver):
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, Driver.Value[11], False)
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, Driver.Value[12], False)
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, Driver.Value[13], False)
VBScript
Sub PopulateForm(groupBox, Driver)
Dim numericUpDown, textBox
Call groupBox.ProductNames.ClickItem(Driver.Value(1))
Set numericUpDown = groupBox.Quantity
Call numericUpDown.Click(37, 9)
numericUpDown.wValue = Driver.Value(2)
groupBox.Date.wDate = Driver.Value(3)
Set textBox = groupBox.Customer
Call textBox.Click(39, 7)
textBox.wText = Driver.Value(0)
Set textBox = groupBox.Street
Call textBox.Click(66, 7)
textBox.wText = Driver.Value(4)
Set textBox = groupBox.City
Call textBox.Click(72, 9)
textBox.wText = Driver.Value(5)
Set textBox = groupBox.State
Call textBox.Click(98, 9)
textBox.wText = Driver.Value(6)
Set textBox = groupBox.Zip
Call textBox.Click(31, 12)
textBox.wText = Driver.Value(7)
groupBox.WinFormsObject(Driver.Value(8)).ClickButton
Set textBox = groupBox.CardNo
Call textBox.Click(53, 12)
textBox.wText = Driver.Value(9)
groupBox.ExpDate.wDate = Driver.Value(10)
End Sub
Sub Checkpoint(Driver)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, Driver.Value(11), False)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, Driver.Value(12) , False)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, Driver.Value(13), False)
End Sub
DelphiScript
procedure PopulateForm(groupBox, Driver);
var numericUpDown, textBox;
begin
groupBox.ProductNames.ClickItem(Driver.Value(1));
numericUpDown := groupBox.Quantity;
numericUpDown.Click(37, 9);
numericUpDown.wValue := Driver.Value(2);
groupBox.Date.wDate := Driver.Value(3);
textBox := groupBox.Customer;
textBox.Click(67, 17);
textBox.wText := Driver.Value(0);
textBox := groupBox.Street;
textBox.Click(31, 5);
textBox.wText := Driver.Value(4);
textBox := groupBox.City;
textBox.Click(47, 15);
textBox.wText := Driver.Value(5);
textBox := groupBox.State;
textBox.Click(82, 4);
textBox.wText := Driver.Value(6);
textBox := groupBox.Zip;
textBox.Click(10, 8);
textBox.wText := Driver.Value(7);
groupBox.WinFormsObject(Driver.Value(8)).ClickButton;
textBox := groupBox.CardNo;
textBox.Click(46, 9);
textBox.wText := Driver.Value(9);
groupBox.ExpDate.wDate := Driver.Value(10);
end;
procedure Checkpoint(Driver);
begin
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, 'wText', cmpEqual, Driver.Value(11), false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, 'wText', cmpEqual, Driver.Value(12), false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, 'wText', cmpEqual, Driver.Value(13), false);
end;
C++Script, C#Script
function PopulateForm(groupBox, Driver)
{
var numericUpDown, textBox;
groupBox["ProductNames"]["ClickItem"](Driver.Value(1));
numericUpDown = groupBox["Quantity"];
numericUpDown["Click"](37, 9);
numericUpDown["wValue"] = Driver.Value(2);
groupBox["Date"]["wDate"] = Driver.Value(3);
textBox = groupBox["Customer"];
textBox["Click"](43, 7);
textBox["wText"] = Driver.Value(0);
textBox = groupBox["Street"];
textBox["Click"](31, 11);
textBox["wText"] = Driver.Value(4);
textBox = groupBox["City"];
textBox["Click"](24, 6);
textBox["wText"] = Driver.Value(5);
textBox = groupBox["State"];
textBox["Click"](31, 8);
textBox["wText"] =Driver.Value(6);
textBox = groupBox["Zip"];
textBox["Click"](24, 17);
textBox["wText"] = Driver.Value(7);
groupBox["WinFormsObject"](Driver.Value(8))["ClickButton"]();
textBox = groupBox["CardNo"];
textBox["Click"](19, 7);
textBox["wText"] = Driver.Value(9);
groupBox["ExpDate"]["wDate"] = Driver.Value(10);
}
function Checkpoint(Driver)
{
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["Price"], "wText", cmpEqual, Driver.Value(11), false);
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["Discount"], "wText", cmpEqual, Driver.Value(12), false);
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["groupBox1"]["Total"], "wText", cmpEqual, Driver.Value(13), false);
}
Below is the complete test script:
JavaScript, JScript
function OpenForm(mainForm)
{
mainForm.MainMenu.Click("Orders|New order...");
}
function PopulateForm(groupBox, Driver)
{
var numericUpDown, textBox;
groupBox.ProductNames.ClickItem(Driver.Value(1));
numericUpDown = groupBox.Quantity;
numericUpDown.Click(8, 7);
numericUpDown.wValue = Driver.Value(2);
groupBox.Date.wDate = Driver.Value(3);
textBox = groupBox.Customer;
textBox.Click(69, 12);
textBox.wText = Driver.Value(0);
textBox = groupBox.Street;
textBox.Click(4, 8);
textBox.wText = Driver.Value(4);
textBox = groupBox.City;
textBox.Click(12, 14);
textBox.wText = Driver.Value(5);
textBox = groupBox.State;
textBox.Click(21, 6);
textBox.wText = Driver.Value(6);
textBox = groupBox.Zip;
textBox.Click(14, 14);
textBox.wText = Driver.Value(7);
groupBox.WinFormsObject(Driver.Value(8)).ClickButton();
textBox = groupBox.CardNo;
textBox.Click(35, 15);
textBox.wText = Driver.Value(9);
groupBox.ExpDate.wDate = Driver.Value(10);
}
function Checkpoint(Driver)
{
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, Driver.Value(11), false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual,Driver.Value(12), false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, Driver.Value(13), false);
}
function CloseForm(orderForm)
{
orderForm.ButtonOK.ClickButton();
}
function CloseApplication(mainForm, orders)
{
mainForm.Close();
orders.dlgConfirmation.btnNo.ClickButton();
}
function Main()
{
var orders, mainForm, orderForm, groupBox, Driver;
Driver = DDT.ExcelDriver("../../TestBook.xlsx", "TestSheet", true);
TestedApps.RunAll();
orders = Aliases.Orders;
mainForm = orders.MainForm;
while(!Driver.EOF())
{
OpenForm(mainForm);
orderForm = orders.OrderForm;
groupBox = orderForm.Group;
PopulateForm(groupBox, Driver);
Checkpoint(Driver);
CloseForm(orderForm);
Driver.Next();
}
CloseApplication(mainForm, orders);
}
Python
def OpenForm(mainForm):
mainForm.MainMenu.Click("Orders|New order...")
def PopulateForm():
groupBox.ProductNames.ClickItem(Driver.Value[1])
numericUpDown = groupBox.Quantity
numericUpDown.Click(8, 7)
numericUpDown.wValue = Driver.Value[2]
groupBox.Date.wDate = Driver.Value[3]
textBox = groupBox.Customer
textBox.Click(69, 12)
textBox.wText = Driver.Value[0]
textBox = groupBox.Street
textBox.Click(4, 8)
textBox.wText = Driver.Value[4]
textBox = groupBox.City
textBox.Click(12, 14)
textBox.wText = Driver.Value[5]
textBox = groupBox.State
textBox.Click(21, 6)
textBox.wText = Driver.Value[6]
textBox = groupBox.Zip
textBox.Click(14, 14)
textBox.wText = Driver.Value[7]
groupBox.WinFormsObject(Driver.Value[8]).ClickButton()
textBox = groupBox.CardNo
textBox.Click(35, 15)
textBox.wText = Driver.Value[9]
groupBox.ExpDate.wDate = Driver.Value[10]
def Checkpoint(Driver):
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, Driver.Value[11], False)
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, Driver.Value[12], False)
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, Driver.Value[13], False)
def CloseForm(orderForm):
orderForm.ButtonOK.ClickButton()
def CloseApplication():
mainForm.Close()
orders.dlgConfirmation.btnNo.ClickButton()
def Main():
Driver = DDT.ExcelDriver("../../TestBook.xlsx", "TestSheet", True)
TestedApps.RunAll()
orders = Aliases.Orders
mainForm = orders.MainForm
while not Driver.EOF():
OpenForm(mainForm)
orderForm = orders.OrderForm
groupBox = orderForm.Group
PopulateForm(groupBox, Driver)
Checkpoint(Driver)
CloseForm(orderForm)
Driver.Next()
CloseApplication(mainForm, orders)
VBScript
Sub OpenForm(mainForm)
Call mainForm.MainMenu.Click("Orders|New order...")
End Sub
Sub PopulateForm(groupBox,Driver)
Dim numericUpDown, textBox
Call groupBox.ProductNames.ClickItem(Driver.Value(1))
Set numericUpDown = groupBox.Quantity
Call numericUpDown.Click(37, 9)
numericUpDown.wValue = Driver.Value(2)
groupBox.Date.wDate = Driver.Value(3)
Set textBox = groupBox.Customer
Call textBox.Click(39, 7)
textBox.wText = Driver.Value(0)
Set textBox = groupBox.Street
Call textBox.Click(66, 7)
textBox.wText = Driver.Value(4)
Set textBox = groupBox.City
Call textBox.Click(72, 9)
textBox.wText = Driver.Value(5)
Set textBox = groupBox.State
Call textBox.Click(98, 9)
textBox.wText = Driver.Value(6)
Set textBox = groupBox.Zip
Call textBox.Click(31, 12)
textBox.wText = Driver.Value(7)
groupBox.WinFormsObject(Driver.Value(8)).ClickButton
Set textBox = groupBox.CardNo
Call textBox.Click(53, 12)
textBox.wText = Driver.Value(9)
groupBox.ExpDate.wDate = Driver.Value(10)
End Sub
Sub Checkpoint(Driver)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, "wText", cmpEqual, Driver.Value(11), False)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, "wText", cmpEqual, Driver.Value(12) , False)
Call aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, "wText", cmpEqual, Driver.Value(13), False)
End Sub
Sub CloseForm(orderForm)
orderForm.ButtonOK.ClickButton
End Sub
Sub CloseApplication(orders, mainForm)
mainForm.Close
orders.dlgConfirmation.btnNo.ClickButton
End Sub
Sub Main
Dim orders, mainForm, orderForm, groupBox
Set Driver = DDT.ExcelDriver("../../TestBook.xlsx", "TestSheet", True)
TestedApps.RunAll
Set orders = Aliases.Orders
Set mainForm = orders.MainForm
While Not Driver.EOF
Call OpenForm(mainForm)
Set orderForm = orders.OrderForm
Set groupBox = orderForm.Group
Call PopulateForm(groupBox, Driver)
Call Checkpoint(Driver)
Call CloseForm(orderForm)
Driver.Next
Wend
Call CloseApplication(orders, mainForm)
End Sub
DelphiScript
procedure OpenForm(mainForm);
begin
mainForm.MainMenu.Click('Orders|New order...');
end;
procedure PopulateForm(groupBox, Driver);
var numericUpDown, textBox;
begin
groupBox.ProductNames.ClickItem(Driver.Value(1));
numericUpDown := groupBox.Quantity;
numericUpDown.Click(37, 9);
numericUpDown.wValue := Driver.Value(2);
groupBox.Date.wDate := Driver.Value(3);
textBox := groupBox.Customer;
textBox.Click(67, 17);
textBox.wText := Driver.Value(0);
textBox := groupBox.Street;
textBox.Click(31, 5);
textBox.wText := Driver.Value(4);
textBox := groupBox.City;
textBox.Click(47, 15);
textBox.wText := Driver.Value(5);
textBox := groupBox.State;
textBox.Click(82, 4);
textBox.wText := Driver.Value(6);
textBox := groupBox.Zip;
textBox.Click(10, 8);
textBox.wText := Driver.Value(7);
groupBox.WinFormsObject(Driver.Value(8)).ClickButton;
textBox := groupBox.CardNo;
textBox.Click(46, 9);
textBox.wText := Driver.Value(9);
groupBox.ExpDate.wDate := Driver.Value(10);
end;
procedure Checkpoint(Driver);
begin
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Price, 'wText', cmpEqual, Driver.Value(11), false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.Discount, 'wText', cmpEqual, Driver.Value(12), false);
aqObject.CheckProperty(Aliases.Orders.OrderForm.Group.groupBox1.Total, 'wText', cmpEqual, Driver.Value(13), false);
end;
procedure CloseForm(orderForm);
begin
orderForm.ButtonOK.ClickButton;
end;
procedure CloseApplication(orders, mainForm);
begin
mainForm.Close;
orders.dlgConfirmation.btnNo.ClickButton;
end;
procedure Main;
var orders, mainForm, orderForm, groupBox, Driver;
begin
Driver:=DDT.ExcelDriver('../../TestBook.xlsx', 'TestSheet', true);
TestedApps.RunAll;
orders := Aliases.Orders;
mainForm := orders.MainForm;
while not Driver.EOF do
begin
OpenForm(mainForm);
orderForm := orders.OrderForm;
groupBox := orderForm.Group;
PopulateForm(groupBox,Driver);
Checkpoint(Driver);
CloseForm(orderForm);
Driver.Next;
end;
CloseApplication(orders, mainForm);
end;
C++Script, C#Script
function OpenForm(mainForm)
{
mainForm["MainMenu"]["Click"]("Orders|New order...");
}
function PopulateForm(groupBox, Driver)
{
var numericUpDown, textBox;
groupBox["ProductNames"]["ClickItem"](Driver.Value(1));
numericUpDown = groupBox["Quantity"];
numericUpDown["Click"](37, 9);
numericUpDown["wValue"] = Driver.Value(2);
groupBox["Date"]["wDate"] = Driver.Value(3);
textBox = groupBox["Customer"];
textBox["Click"](43, 7);
textBox["wText"] = Driver.Value(0);
textBox = groupBox["Street"];
textBox["Click"](31, 11);
textBox["wText"] = Driver.Value(4);
textBox = groupBox["City"];
textBox["Click"](24, 6);
textBox["wText"] = Driver.Value(5);
textBox = groupBox["State"];
textBox["Click"](31, 8);
textBox["wText"] =Driver.Value(6);
textBox = groupBox["Zip"];
textBox["Click"](24, 17);
textBox["wText"] = Driver.Value(7);
groupBox["WinFormsObject"](Driver.Value(8))["ClickButton"]();
textBox = groupBox["CardNo"];
textBox["Click"](19, 7);
textBox["wText"] = Driver.Value(9);
groupBox["ExpDate"]["wDate"] = Driver.Value(10);
}
function Checkpoint(Driver)
{
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["Price"], "wText", cmpEqual, Driver.Value(11), false);
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["Discount"], "wText", cmpEqual, Driver.Value(12), false);
aqObject.CheckProperty(Aliases["Orders"]["OrderForm"]["Group"]["groupBox1"]["Total"], "wText", cmpEqual, Driver.Value(13), false);
}
function CloseForm(orderForm)
{
orderForm["ButtonOK"]["ClickButton"]();
}
function CloseApplication(mainForm, orders)
{
mainForm["Close"]();
orders["dlgConfirmation"]["btnNo"]["ClickButton"]();
}
function Main()
{
var orders, mainForm, orderForm, groupBox, Driver;
Driver = DDT["ExcelDriver"]("../../TestBook.xlsx", "TestSheet", true);
TestedApps["RunAll"]();
orders = Aliases["Orders"];
mainForm = orders["MainForm"];
while(!Driver.EOF())
{
OpenForm(mainForm);
orderForm = orders["OrderForm"];
groupBox = orderForm["Group"];
PopulateForm(groupBox,Driver);
Checkpoint(Driver);
CloseForm(orderForm);
Driver["Next"]();
}
CloseApplication(mainForm, orders);
}