我有一个单页面应用程序,它有一个Ruby on Rails后端,并使用Authlogic来促进用户身份验证。
我正在使用CasperJS实现功能测试,并且很难在会话之间以及thenOpen
命令之间保持登录会话。
我正在运行以下命令:
casperjs --cookies-file=cookies.txt test ../../../foobar/test/casper/login/test.js
以下是我当前代码的示例:
phantom.cookiesEnabled = true;
var x = require('casper').selectXPath
casper.test.begin('Logging in', 2, function suite(test) {
casper.start('http://localhost:3000/login', function() {
console.log("Page loaded");
test.assertExists('form', 'login form is found');
this.fillSelectors('form', {
'#email': "foo@bar.com",
'#password': "foo_bar"
}, false)
this.click('#submit')
casper.thenOpen('http://localhost:3000/my', function() {
test.assertUrlMatch(this.getCurrentUrl(), 'http://localhost:3000/my', "Logged in and maintained login cookie")
})
})
casper.run(function() {
test.done();
});
})
在观看我的开发日志时,我可以看到第一个测试(casper.start
)成功登录但在thenOpen
之后,不再维护Authlogic UserSession
以便重定向PhantomJS到localhost:3000/login
,如果没有登录用户,应该会发生什么。
如何在thenOpen
之间以及多次测试之间使用CasperJS维护登录会话?我可以维护cookie以便用户在测试之间保持登录状态吗?
答案 0 :(得分:0)
似乎这个评论保存了一天
查看代码
this.click
,然后执行操作casper.thenOpen
我会在表单提交后添加另一个步骤 使用casper.waitForXXXX
。它看起来像一个时间问题