Thursday, 13 August 2015

Selenium IDE - How to add random data into text, large/small text area fields.

For adding dynamic data we need to add a .js extension file in selenium IDE (Selenium IDE > Options > Options).

Copy paste the below code and save it as .js extension file (userextension.js).

===============

Selenium.prototype.doRandomString = function( options, varName ) {

    var length = 8;
    var type   = 'alphanumeric';
    var o = options.split( '|' );
    for ( var i = 0 ; i < 2 ; i ++ ) {
        if ( o[i] && o[i].match( /^\d+$/ ) )
            length = o[i];

        if ( o[i] && o[i].match( /^(?:alpha)?(?:numeric)?$/ ) )
            type = o[i];
    }

    switch( type ) {
        case 'alpha'        : storedVars[ varName ] = randomAlpha( length ); break;
        case 'numeric'      : storedVars[ varName ] = randomNumeric( length ); break;
        case 'alphanumeric' : storedVars[ varName ] = randomAlphaNumeric( length ); break;
        default             : storedVars[ varName ] = randomAlphaNumeric( length );
    };
};

function randomNumeric ( length ) {
    return generateRandomString( length, '0123456789'.split( '' ) );
}

function randomAlpha ( length ) {
    var alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split( '' );
    return generateRandomString( length, alpha );
}

function randomAlphaNumeric ( length ) {
    var alphanumeric = '01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split( '' );
    return generateRandomString( length, alphanumeric );
}

function generateRandomString( length, chars ) {
    var string = '';
    for ( var i = 0 ; i < length ; i++ )
        string += chars[ Math.floor( Math.random() * chars.length ) ];
    return string;
}

==================

In Selenium IDE, enter

Command             Target             Value

randomString          6                Firstname
echo                ${Firstname}
type                   id=fname       ${Firstname}

==================

Scenario - Let say we want to create a new user profile and in firstname & lastname field we want to enter some random dynamic data.

Step 1: Copy paste the above code and save as .js extension file and add the javascript file to IDE (Selenium IDE > Options > Options > Selenium core extension). Restart your IDE.

Step 2: Add command

Command                  Target              Value
randomString                 6               Firstname
echo                       ${Firstname}
type                          id=fname        ${Fname}
randomString                 6                Lastname
echo                        ${Lastname}
type                           id=lname        ${Lname}
click                          id=submit

Once the user is added, for verification we can use;

Command                    Target                               Value

store                     ${Fname} ${Lname}             username
echo                          ${username}
verifyText           enter: id/css/xpath/dom      ${Fname} ${Lname}

OR    

verifyText           enter: id/css/xpath/dom            ${username}

=========
Incase of a drop down list,
=========
select                  enter: id/css/xpath/dom        ${Fname} ${Lname}
verifyselectedlabel    enter: id/css/xpath/dom        ${Fname} ${Lname}

OR    

select            enter: id/css/xpath/dom        ${username}
verifyselectedlabel    enter: id/css/xpath/dom        ${username}

===========

HTML Code Format

<tr>
    <td>randomString</td>
    <td>6</td>
    <td>Firstname</td>
</tr>
<tr>
    <td>echo</td>
    <td>${Firstname}</td>
</tr>
<tr>
    <td>randomString</td>
    <td>6</td>
    <td>Lastname</td>
</tr>
<tr>
    <td>echo</td>
    <td>${Lastname}</td>
</tr>
<tr>
    <td>Type</td>
    <td>id=fname</td>
    <td>${Fname}</td>
</tr>
<tr>
    <td>Type</td>
    <td>id=lname</td>
    <td>${Lname}</td>
</tr>
<tr>
    <td>click</td>
    <td>id=submit</td>
</tr>
<tr>
    <td>store</td>
    <td>${Fname} ${Lname}</td>
    <td>username</td>
</tr>
<tr>
    <td>echo</td>
    <td>${username}</td>
</tr>
<tr>
    <td>verifyText</td>
    <td>name=title</td>
    <td>${username}</td>
</tr>
<tr>
    <td>select</td>
    <td>id=username</td>
    <td>${username}</td>
</tr>
<tr>
    <td>verifyselectedlabel</td>
    <td>id=username</td>
    <td>${username}</td>
</tr>


Thanks,
Pinaki Mohapatra

No comments:

Post a Comment