Sunday, September 22, 2019

13.3 ChildObjects Method


What is the ChildObjects Method ?

You can use the ChildObjects method to retrieve all objects located inside a specified parent object or only those child objects that fit a certain programmatic description. To retrieve this subset of child objects, you first create a description object, and then you add the set of properties and values that you want your child object collection to match using the Description object.

The objects contained in a window or frame are textbox, combo box and link. The window or frame is the Parent Object and the frame or textbox are the ChildObjects.

Syntax – object.ChildObjects(Description) – Description is required for Mobile ADD In and optional for all others.

Points To Remember

      1. Insight Objects do not support ChildObjects method
      2. Android objects are supported and related properties are supported – class, nativeclass, resourceid, text

1. The following script gets the name of all the links from a page -:

Dim oDesc
Set oDesc = Description.Create
oDesc("micclass").value = "Link"

'Find all the Links
Set obj = Browser("Math Calculator").Page("Math Calculator").ChildObjects(oDesc)

Dim i
'obj.Count value has the number of links in the page

For i = 0 to obj.Count - 1                              
   'get the name of all the links in the page
   x = obj(i).GetROProperty("innerhtml") 
   print x 
Next



2. The following script gets the number of Checkboxes with the HTML tag as INPUT and sets all those checkboxes as ON.

Set MyDescription = Description.Create()
MyDescription("html tag").Value = "INPUT"
MyDescription("type").Value = "checkbox"
Set Checkboxes = Browser("Itinerary").Page("Itinerary").ChildObjects(MyDescription)
NoOfChildObjs = Checkboxes.Count
For Counter=0 to NoOfChildObjs-1
        Checkboxes(Counter).Set "ON"
Next


13.2 CheckProperty Method






Description

Checks whether the actual value of the specified object property matches the specified expected value within the specified timeout.

Syntax

Object.CheckProperty(PropertyName,PropertyValue,[TimeOut])


PropertyName - Required. A String value. The name of the property whose value is checked. The available properties are listed in the description properties page under each test object.


PropertyValue - Required. A Variant.
The expected value against which the actual property value should be checked. You can either use a simple value or you can use a comparison object together with the value to perform more complex comparisons.
Example to Show the implementation of CheckProperty
'The following example uses the CheckProperty method to check whether
'the text "Mercury" is entered in the "Name" edit box.
 
Browser("Nested Lists").Page("Page").WebEdit("Name").Set "Mercury"
Browser("Nested Lists").Page("Page").WebEdit("Name").CheckProperty "value", "Mercury"
TimeOut - Optional. An unsigned long integer value.
The time, in milliseconds, within which UFT should check whether the actual value of the property matches the specified expected value. If no value is specified, UFT uses the time set in the Object Synchronization Timeout option in the Run pane of the Test Settings dialog box.
Default value = 60


Return Type A Boolean value. Returns TRUE if the property achieves the value, and FALSE if the timeout is reached before the property achieves the value.
A TRUE return value reports a Passed step to the run results; a FALSE return value reports a Failed step to the run results.
You can also use comparison objects to perform more complex value comparisons. For example, you can instruct UFT to check whether a specific property value is greater than the specified value.
An example of the syntax required when using a comparison object is: Object.CheckProperty "items count",micGreaterThan(8)
The following comparison objects can be used:
  • micGreaterThan: Greater than; Specifies that UFT checks whether the property value is greater than the specified value.
  • MicLessThan: Less than; Specifies that UFT checks whether the property value is less than the specified value.
  • MicGreaterThanOrEqual: Greater than or equal to; Specifies that UFT checks whether the property value is greater than or equal to the specified value.
  • MicLessThanOrEqual: Less than or equal to; Specifies that UFT checks whether the property value is less than or equal to the specified value.
  • MicNotEqual: Not equal to; Specifies that UFT checks whether the property value is not equal to the specified value.
  • MicRegExpMatch: Regular expression; Specifies that UFT checks whether the property value achieves a regular expression match with the specified value. Regular expressions are case-sensitive and must match exactly. For example, 'E.*h' matches 'Earth' but not 'The Earth' or 'earth'.


When the types of the expected value and actual value do not match, the comparisons are performed as follows (in this order):
  • Empty values: Empty values may be an uninitialized variable or field (which returns TRUE for the IsNull function in VBscript) or initialized to an empty value (which returns TRUE for the IsEmpty function is VBscript). When trying to compare two arguments when at least one is an empty value, the comparison assumes equality for two uninitialized arguments and for two empty arguments. Any other combination is considered unequal.
    For example:
    dim vEmpty
    Object.CheckProperty "text",micNotEqual
    (vEmpty)
    will not wait for the timeout (because the 'text' property value is an empty string and the argument passed to micNotEqual is an empty value and so micNotEqual finds them not equal and returns TRUE).
  • String values: When trying to compare a string value with non-string value, the string value is converted to the non-string type and then compared. If the string value cannot be converted to the non-string type, the comparison assumes the values are not equal.
    For example:
    Object.CheckProperty "text",micGreaterThan(8) will not wait for the timeout if the 'text' property value is '16' (because micGreaterThan finds 16 to be greater than 8 and returns TRUE), but will wait if the 'text' property value is 'a' (because 'a' cannot be converted to a number).
  • Boolean values: When trying to compare a Boolean value with non-boolean value, the non-boolean value is converted to a boolean value and then compared. The conversion method assumes that any integer value other than '0' is TRUE, and that '0' alone is FALSE. If the conversion fails to produce a boolean value (for example, if the value is 'abc'), the comparison result will be FALSE (note that for the WaitProperty method this result would instruct UFT to keep waiting). If the conversion succeeds, the method compares the two boolean values according to the comparison logic.
  • Other value types: When other value types do not match, they are compared under the assumption that different types are not equal (nor greater than or less than each other).



13.1 CaptureBitmap Method





What is the function of CaptureBitmap method?

The function of CaptureBitmap method is to save a screen capture of the mentioned object as .bmp or .png file, with a specified name and at a specified path.


Syntax -: object.CaptureBitmap(FullFileName,[OverrideExisting])

Parameters – 1. FullFileName – Required. A String value.
            1. OverrideExisitng - A boolean value. Default value is False.


Return Type – None

Capture an image to the Results Folder

'The following example uses the CaptureBitmap method to capture
 'a screen shot of the No. of Passengers edit box. The file will
 'automatically be saved to a different folder (the test run
 'results folder) in each test run.

 Browser("Mercury Tours").Page("Find  Flights").WebEdit("numPassengers").CaptureBitmap "edit_4.bmp"
Capture an image to an Absolute Folder Path.

'The following example uses the CaptureBitmap method to capture
 'a screen shot of the No. of Passengers edit box and save the
 'image to an absolute path. Each time the CaptureBitmap statement
 'runs, UFT overwrites the previous image with the new one.

 Browser("Mercury Tours").Page("Find  Flights").WebEdit("numPassengers").CaptureBitmap "C:\ScreenCaps\edit_4.bmp", True

Capture an image and upload it to the Database

'The following example uses the CaptureBitmap method to capture an image, after which the image is
 'uploaded to the database.
 Browser("Browser").Page("The official site for").Image("PURE NEW  ZEALAND").CaptureBitmap ("c:\NewZealand.bmp")
 UploadImageToDataBase ("c:\NewZealand.bmp")



Monday, July 15, 2019

4. GUI TESTS AND ACTIONS-1



GUI TESTS AND ACTIONS-1


Define GUI Tests?

In a GUI Test, it contains calls to actions. By default, it contains a call to a single action but we can have multiple actions and multiple action calls to new or existing actions.


Why do we need actions?

We need actions to manage our tests in a more logical, efficient and modular fashion.

What are the different types of actions?

      1. Reusable actions
      2. Non-Reusable actions
      3. External actions
      4. Nested actions

Describe Reusable Actions?

      1. All actions by default are reusable.
      2. Can be called multiple times by local tests and other tests.
      3. Can be modified only from the parent test.
      4. Can be changed into a non-resuable action.

Describe Non-Reusable Actions?

      1. Can be called only once and in the local test.
      2. Can be copied.
      3. Can be changed into a reusable action from properties.

Describe external actions?

      1. Stored with another test.
      2. Read Only from called test.

Describe Nested actions?

1. Called from another action.

Tuesday, July 2, 2019

12 Parameterization - 1 - Basics


Parameterization Basics

What is a parameter?

A parameter is a variable used to denote or represent data in our tests.

Why do we parameterize?

We do parameterization when we want multiple sets of data to be used for the same set of operations.
Suppose we want to automate an application for Localization Testing. We can use the same code and parameterize the input data for the application steps and import the different data for different language from different data table or excel file for each language.
In another example, we can use parameterization for input values for an application with same set of test data as input data. When we have one application as Web and another as Windows with same business flows.


What do we parameterize?

We use parameterization for the below reasons -:

      1. Checkpoints
      2. Object Properties for a selected step.
      3. Object Properties in the Object Repository.
      4. Operation arguments for a selected step.


What are the different types of Parameterization available in UFT?

The different types of parameterization available in UFT are -:

      1. Test and Action Parameterization.
      2. Data Table Parameterization.
      3. Environment Variable Parameterization.
      4. Random Number Parameterization.

What are the different types of Test Parameterization?

The different types of Test Parameterization are -:

      1. Input Parameterization
      2. Output Parameterization
Both the parameterization information can be added from the related Test Properties Pane.
In the Properties Pane – Parameterization tab we have options to -:

a) Add – Input/Output Parameter
b) Edit – edit information related to added parameters such as Name, Value and Type of parameter.
c) Delete – delete a parameter.
We can use these parameter values to pass to the actions present in the test and also to other tests in the same Solution.


What is Action Parameterization?

The different types of Action Parameterization are -:

        1. Input Parameterization
        2. Output Parameterization
Both the parameterization information can be added from the related Action Properties Pane.
In the Properties Pane – Parameterization tab we have options to -:

a) Add – Input/Output Parameter
b) Edit – edit information related to added parameters such as Name, Value and Type of parameter.
      1. Delete – delete a parameter.


What are the different types of Parameterization through Environment Variables?

The different types of Environment Variables are -:

      1. User-Defined Internal Environment Variables
      2. User-Defined External Environment Variables
      3. In-Built Environment Variables.


User-Defined Internal Environment Variables

In the case of User-Defined Internal Environment Variables we can set up variables from the FILE Menu-Settings option-Environment tab.
We can add the environment variables by giving the name and value of the variable from the above pane.
We can also export the User-Defined Environment variable to an XML file from the menu.


User-Definned External Environment Variables

In the case of User-Defined External Environment variable we can create an external XML file in the format accepted by UFT and import the created XML file to UFT with the options present in the menu. The XML file format should start as -:

<Environment>
<Variable>
<Name>VariableName1<\Name>
<Value>VariableValue1<\Value>
<Description>Variable Description1<\Description>
<\Variable>
<Variable>
<Name>VariableName1<\Name>
<Value>VariableValue1<\Value>
<Description>Variable Description1<\Description>
<\Variable>
<\Environment>


UFT In-Built Environment Variables

There are multiple built-in environment variables in UFT which consist of information related to the test. These are variables such as OS Name and Test Name. We can use these environment variables in our code to check with an IF structure and run the required code.


What is the Data Driver?

Data Driver in UFT is used to quickly parameterize several or all occurrences of a property of a test object, checkpoint property and method argument when they have multiple occurrences of a constant in the action.
Data Driver functions like Find and Replace All in excel.

Tuesday, June 11, 2019

11. Function Definition Generator


Function Definition Generator



What is Function Definition Generator?

Function Definition Generator can be selected from the Design menu drop down for a function library or Action.
It allows us to define functions within an Action or function library. It gives us the basic framework to define a function and also associate it with an existing test object and use it as a default operation.

What are the different sections in the Function Definition Generator?

The different sections in the Function Definition Generator are -:

      1. Function Definition
      2. Arguments
      3. Register
      4. Additional Information
      5. Preview
      6. Insert another Function checkbox


Describe the Function Definition section

This section has 3 parts -:

      1. Name – Where we can give the sub-routine or function its name.
      2. Type – We can select any of the 2 options based on what we want to define a) Function or b) Sub-routine
      3. Scope – It can be public or private

Describe Arguments section

This section has the following parts -:

      1. Add argument button
      2. Delete argument button
      3. Move Up argument button
      4. Move Down argument button
      5. Name of the argument
      6. Pass Mode – a) By Reference b) By Value


Describe Register section

In the register section we can add the function to a test object and also apply the function as the default operation on the test object. It basically uses the RegUserFunc keyword or adds this keyword to the function and registers it automatically to the selected test object when this checkbox is selected.

The different options are -:

      1. Register to a test object checkbox – to register the function to a test object.
      2. Test Object Name- to which the function will be registered.
      3. Object Operation – which this function will work upon
      4. Register as default operation checkbox – to confirm if this function will be the default operation of the selected test object.

Describe Additional information section

The Additional information section allows the developer to add more description and documentation related to the function defined.


Describe the Preview section

The Preview section displays the Structure of the Function as defined in the Function Definition Generator.


Describe the Insert another function definition

This checkbox allows another function to be inserted after the current definition is completed.




10. Function Library – Part 1



Function Library – Part 1



What are Function Libraries?

Apart from UFT test objects, methods and in-built functions we can add user defined functions containing VBScript code for each business functions, sub-routines, statements or scripts which needs to be incorporated in multiple actions or codes.

A function library is a separate VBScript code file which can be saved as a text file and associated with UFT tests.

We cannot use a function library with a test without associating the function library with the test.

How does UFT work with Function Libraries?

      1. Create a function library using VBScript and save it as a .qfl or .vbs or text file.
      2. Associate the required function libraries with the Test.
      3. Only after associating function libraries to the tests we can call the functions, sub-routines by the required actions.
      4. During run time UFT loads all the function libraries, it is associated with, to access the functions.
      5. UFT searches the function from the Associated Function Library list and if there are functions with the same name the first function is selected.
      6. The priority of function libraries are as per the list in the solution explorer.

Using a function library dynamically or without associating

We can do that by using the statement LoadFunctionLibrary statement.

If there is a conflict in the names of a dynamically loaded function library and associated function library then dynamically loaded function library is given priority.


Registering a function as an operation to a test object class

We can register a function as an operation to a test object class using RegisterUserFunc.

By using the keyword RegisterUserFunc in an action or function library to register a function to a test object class. We can use this as a defined operation for that class of object.

Eg -: RegisterUserFunc "WebEdit", "MySet", "MySetFunc", True

WebEdit is the class to which the "MySet"(cannot contain spaces) named operation is getting added with the help of the "MySetFunc" user-defined function.
The True argument at the end of the statement makes the operation its default operation.


Using UnregisterUserFunc

By using UnregisterUserFunc we can unregister a user-defined function that has already been registered with the register function.

Unregistering user-defined methods are important to avoid errors in the normal functioning of built-in UFT methods or test failures.



LoadFunctionLibrary and ExecuteFile statements


For a TEST - In LoadFunctionLibrary the code in the function library is available for the complete run session for the complete test.

For a COMPONENT – The LoadFunctionLibrary the code in the function library is available within the scope of the calling component.

In the case of ExecuteFile statement the code of the file is available only within the calling action or component.

LoadFunctionLibrary enables debugging of code in the function library during run time.

ExecuteFile statement does not allow debugging of code and also while using this statement
and debugging a test or component, the execution marker may not be correctly displayed.