将Selenium IDE与随机值一起使用

时间:2020-03-06 15:01:22  来源:igfitidea点击:

是否可以使用Firefox插件创建Selenium测试,该插件使用随机生成的值来帮助进行回归测试?

全文:
我想通过为客户提供一套使用某些智能工具为数据库创建随机(或者至少伪随机)值的测试来帮助他们的客户进行验收测试。目前,我的Selenium IDE测试的问题之一是它们具有预定义的值,这会使某些类型的测试成为问题。

解决方案

首先,Selenium IDE相当有限,我们应该考虑切换到Selenium RC,它可以由Java或者Perl或者Ruby或者某些其他语言驱动。

仅使用Selenium IDE,我们可以嵌入JavaScript表达式以派生命令参数。
我们应该能够在文本字段中输入随机数,例如:

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

更新:我们可以在名为" user-extensions.js"的文件中定义帮助程序功能。参见硒参考。

我们可以添加用户exentions.js以获得随机值。

复制以下代码并将其另存为.js扩展名(randomgenerator.js),并将其添加到Selenium核心扩展名(SeleniumIDE-> Options-> General选项卡)。

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

使用方式

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

上面的代码生成6个字符字符串,并将其分配给变量x

HTML格式的代码如下所示:

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

(基于Thilo的答案)
我们可以像这样混合文字和随机数:

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

Gmail可以自动将所有使用别名的内容(例如" [email protected]")发送到地址" [email protected]"。

乘以* 11111可为我们提供比1到9更大的随机值(在Thilo示例中)