使用Protractor自动生成用于测试表单的字段值

时间:2015-06-25 08:07:34

标签: javascript angularjs testing integration-testing protractor

我想使用Protractor测试一个简单的用户注册表单。

这是我的测试:

describe('User Registration Page Tests', function() {
    beforeEach(function() {
        browser.get('/#/register');
    });

    it('user registration success', function(){
        element(by.model('user.organizationName')).sendKeys('someOrg');
        element(by.model('user.firstName')).sendKeys('some');
        element(by.model('user.lastName')).sendKeys('user');
        element(by.model('user.email')).sendKeys('some@user.com');
        element(by.model('user.password')).sendKeys('123456');
        element(by.model('confirmPassword')).sendKeys('123456');

        element(by.id('submitBtn')).click();

        browser.getCurrentUrl().then(function(url) {
            expect(url).toEqual('http://localhost:9001/#/success');     
        });
    });
});

第一次,测试将通过。但是对于下一次它将失败,因为该用户已经存在。

有没有办法自动生成新字段值来解决此问题?

无法在谷歌找到任何关于它的内容......

2 个答案:

答案 0 :(得分:4)

将当前时间戳添加到firstName和lastName的值为

var randVal = Date.now()
............................
element(by.model('user.firstName')).sendKeys('some-' + randVal);
element(by.model('user.lastName')).sendKeys('user-' + randVal);
element(by.model('user.email')).sendKeys('some' + randVal + '@user.com');

答案 1 :(得分:1)

可以使用此功能自动生成用户名

var.autoGenerateUserName = function() {
        var autoGenerateUserName = "Auto-UserName-";
        var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        for (var i = 0; i < 3; i++)
            autoGenerateUserName += possible.charAt(Math.floor(Math.random() * possible.length));
        return  autoGenerateUserName;
    };

在此表单注册中,您可以使用类似

的内容
element(by.model('user.organizationName')).sendKeys(autoGenerateUserName());

var userName = autoGenerateUserName();  

element(by.model('user.organizationName')).sendKeys(userName);