casperjs测试注册表形式

casperjs test register form

本文关键字:注册表 测试 casperjs      更新时间:2023-09-26

我的页面中有一个表单,供想要在网站内注册的用户使用。注册后,我将用户插入数据库,创建一个激活密钥并发送一封电子邮件,直到用户没有用激活密钥点击电子邮件中的链接,他才能登录到网站内。

使用CasperJS,我想测试这个功能,fillForm可以,但我如何测试激活密钥?

我想创建一个用激活键隐藏的输入(只有在TEST模式下,而不是在生产中!),并用getFieldValue函数检索这个值。

这是正确的方法还是有更好的模式?

这是我的casperjs测试,用于在注册后检索激活密钥(我创建了一个用激活码隐藏的输入):

view            = 'users/registered';
casper
.start(webroot + view)
.then(function() {
    __utils__.log("Retrieving data from input activation-key");
    activationKey = __utils__.getFieldValue('activation-key');
}).then(function() {
    __utils__.log("Activating account with the key " + activationKey);
}).then(function(){
    this.evaluate(function() {
        __utils__.log("Activating account with the key " + activationKey);
        window.location = webroot + 'users/activate/' + activationKey;
    }); 
}).then(function(){
    this.echo(this.getCurrentUrl());
});
casper.run(function() {
    this.echo('test registeration successful!').exit();
});
casper.viewport(page.width, page.height);
casper.test.done();

我成功地完成了我想要的注册,它可以帮助你:CasperJS-在网站上注册并验证在Gmail上发送的邮件-对于苗条和幻影-

在我用激活码进行一些抓取之前,为了手动激活(纯JS,这里没有jQuery,我不想在gmailDOM环境中注入jQuery):

this.waitForSelector("div.msg",function(){
            this.test.assertSelectorHasText("a","Activation message");
            //var code declared in the main scope
            code = this.evaluate(function(){
                var strongs = document.getElementsByTagName('strong')
                    ,i
                    ,l = strongs.length
                    ;
                    for (i = 0; i < l; ++i) {
                        if(strongs[i].textContent === "activation code:"){
                            //get back the code in DOM context -> split to get back only what I want
                            return (strongs[i].parentNode.textContent.split(' ')[2]);
                        }
                    }
            });
            this.echo("code : " + code,"INFO");
        });