我的页面中有一个表单,用户希望在网站内注册。注册后,我在数据库中插入用户创建激活密钥并发送电子邮件,直到用户没有点击电子邮件内的链接,并且他无法在网站内登录。
使用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();
答案 0 :(得分:1)
我设法做了我想要的注册,它可以帮助你:CasperJS- Register on a site and validate the mail sent on Gmail -for both slimer and phantom-
在我使用激活码进行一些抓取之前,对于手动激活(纯JS,这里没有jQuery,我不想在gmail DOM环境中注入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");
});