Knowledge Base Article

> Knowledge Base > Rapise

Created By  dmarkovtsev Tuesday, August 14, 2018

Rapise supports many types of objects in Web, Mobile and Desktop applications.  And each object has a set of actions that can be applied to it.  You may want to override behavior of existing action or add a new one. Learn how from this article.

For the list of supported object types, their actions and action parameters refer to Rapise Help file. Press F1 keyboard shortcut and expand Rapise Objects node.

 

To find out type of an object in the object tree select it and look at the Properties grid. Expand the object to see available actions.

 

Select an action and press F1 to see action parameters.

 

Let's override DoClick action and add a new action DoHighlight  for HTMLObject type.

First, place the following code into your <test name>.user,js file.

Note: If you are using Rapise 5.7+ do not copy SeSOverrideAction function. It is already included.

function MyHTMLObjectDoClick(defaultActionHandler, x, y, forceEvent)
{
    Tester.Message("Click on " + this.object_name);
    this.highlight();
    Global.DoSleep(500);
    return defaultActionHandler.apply(this, [x, y, forceEvent]);
}

function HTMLObjectDoHighlight()
{
    Tester.Message("Highlight " + this.object_name);
    this.highlight();
    return true;
}

function SeSOverrideAction(/**string*/ objectType, /**string*/ actionName, callback)
{
    var rule = SeSFindRuleByType(objectType);
    if (rule && rule.behavior)
    {
        for(var bi = 0; bi < rule.behavior.length; bi++)
        {
            var beh = rule.behavior[bi];
            if (beh && beh.actions)
            {
                for(var ai = 0; ai < beh.actions.length; ai++)
                {
                    var action = beh.actions[ai];
                    if (("Do" + action.actionName) == actionName)
                    {
                        var defaultActionHandler = action.DoAction;
                        action.DoAction = function()
                        {
                            var args = [defaultActionHandler];
                            args.push.apply(args, arguments);
                            return callback.apply(this, args);
                        }
                        return;
                    }
                }
            }
        }
        
        // No default handler for this action
        if (rule.behavior.length > 0)
        {
            var beh = rule.behavior[0];
            if (!beh.actions)
                beh.actions = [];
            beh.actions.push({
                actionName: actionName.substr(2),
                DoAction: function()
                {
                    var args = [];
                    args.push.apply(args, arguments);
                    return callback.apply(this, args);
                }
            });
        }
    }
}

Notice handlers for actions.  MyHTMLObjectDoClick first parameter is the default handler, other parameters are from DoClick action definition: x, y, forceEvent.  Handler for new action - HTMLObjectDoHighlight - has no parameters, there is no default handler for it. However it may contain other parameters.

Second, install overrides inside TestPrepare function in the <test name>.js file.

function TestPrepare()
{
    // Override existing action
    SeSOverrideAction(/*Object Type*/ "HTMLObject", /*Action Name*/ "DoClick", /*Handler*/ MyHTMLObjectDoClick);
    
    // Add new action
    SeSOverrideAction(/*Object Type*/ "HTMLObject", /*Action Name*/ "DoHighlight", /*Handler*/ HTMLObjectDoHighlight);
}

That's it. Check out attached sample test.

Attachments

Selected files will be attached to any email sent on saving ticket.

file selected files selected  () Delete Selected

  • Created:
  • by:

Select files to upload

Or drag and drop files here

Uploading …
Done!
Upload More?
There was an error.
Try again?

Save to upload the selected file(s)

Article Info
  • Last Updated: 8/14/2018
  • Article ID: KB354
  • Views: 257