45 votes

Utilisation de Selenium IDE avec des valeurs aléatoires

Est-il possible de créer des tests Selenium à l'aide du plugin Firefox qui utilisent des valeurs générées de manière aléatoire pour faciliter les tests de régression ?

L'histoire complète : J'aimerais aider mes clients à effectuer des tests d'acceptation en leur fournissant une suite de tests qui utilisent des astuces pour créer des valeurs aléatoires (ou du moins pseudo-aléatoires) pour la base de données. Pour l'instant, l'un des problèmes de mes tests Selenium IDE est qu'ils ont des valeurs prédéfinies, ce qui rend certains types de tests problématiques.

48voto

Thilo Points 108673

Tout d'abord, l'IDE Selenium est plutôt limité, vous devriez envisager de passer à Selenium RC, qui peut être piloté par Java ou Perl ou Ruby ou d'autres langages.

En utilisant simplement l'IDE Selenium, vous pouvez intégrer des expressions JavaScript pour dériver les paramètres des commandes. Vous devriez être en mesure de taper un nombre aléatoire dans un champ de texte, par exemple :

type fieldName javascript{Math.floor(Math.random()*11)}

Mise à jour : Vous pouvez définir des fonctions d'aide dans un fichier appelé "user-extensions.js". Voir le Référence du sélénium .

30voto

corbacho Points 2808

(Basé sur la réponse de Thilo) Vous pouvez mélanger les littéraux et les nombres aléatoires comme ceci :

javascript{"joe+" + Math.floor(Math.random()*11111) + "@gmail.com";}

Gmail permet de rendre automatique tout ce qui utilise des alias, par exemple, joe+testing@gmail.com sera envoyé à votre adresse joe@gmail.com

Multiplication de *11111 pour obtenir plus de valeurs aléatoires que 1 à 9 (dans l'exemple de Thilo).

21voto

RajendraChary Points 151

Vous pouvez ajouter des exentions utilisateur.js pour obtenir les valeurs aléatoires .

Copiez le code ci-dessous et enregistrez-le sous une extension .js (randomgenerator.js) et ajoutez-le aux extensions de base de Selenium (SeleniumIDE-->Options--->onglet général)

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;
}

Mode d'emploi

Command                Target     Value
-----------           ---------   ----------
randomString           6           x
type                username       ${x}

Le code ci-dessus génère une chaîne de 6 caractères et l'assigne à la variable x.

Le code en format HTML ressemble à ce qui suit :

<tr>
    <td>randomString</td>
    <td>6</td>
    <td>x</td>
</tr>
<tr>
    <td>type</td>
    <td>username</td>
    <td>${x}</td>
</tr>

5voto

afternoon Points 529

Voici une solution en une ligne pour générer une chaîne de lettres aléatoire en JS :

"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").filter(function(e, i, a) { return Math.random() > 0.8 }).join("")

Utile pour coller dans Selenium IDE.

2voto

TomG Points 973

Une phrase unique pour choisir de manière aléatoire parmi un petit ensemble d'alternatives :

javascript{['brie','cheddar','swiss'][Math.floor(Math.random()*3)]}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X