45 votes

Utilisation de Selenium IDE avec des valeurs aléatoires

Est-il possible de créer des tests Selenium en utilisant le plugin Firefox qui utilisent des valeurs générées aléatoirement pour aider à réaliser des tests de régression?

L'histoire complète : Je voudrais aider mes clients à réaliser des tests d'acceptation en leur fournissant une série de tests qui utilisent des méthodes intelligentes pour créer des valeurs aléatoires (ou du moins pseudo-aléatoires) pour la base de données. L'un des problèmes avec mes tests Selenium IDE pour le moment 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, le Selenium IDE 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 Selenium IDE, vous pouvez intégrer des expressions JavaScript pour dériver des paramètres de commande. Vous devriez pouvoir taper un nombre aléatoire dans un champ de texte, par exemple:

type nomDuChamp 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 de Selenium.

30voto

corbacho Points 2808

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

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

Gmail permet automatiquement l'utilisation des alias, par exemple, joe+testing@gmail.com ira à votre adresse joe@gmail.com

En multipliant *11111 pour vous donner plus de valeurs aléatoires que 1 à 9 (dans l'exemple de Thilo)

21voto

RajendraChary Points 151

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

Copiez le code ci-dessous et enregistrez-le en tant qu'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;
}

Manière de l'utiliser

Commande                Cible     Valeur
-----------           ---------   ----------
randomString           6           x
type                nom d'utilisateur       ${x}

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

Le code au format HTML ressemble à ceci:

    randomString
    6
    x

    type
    nom d'utilisateur
    ${x}

5voto

afternoon Points 529

Voici une solution en une ligne pour générer une chaîne de caractères aléatoires 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

Un raccourci pour choisir aléatoirement 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