我正在使用梦魇js登录到一个在本地存储中设置令牌的站点。但是,我以后运行的任何测试都已经登录了。我猜当地的储藏室没被清空。有办法这样做吗?我在test.js中的代码
require('mocha-generators').install();
var Nightmare = require('nightmare');
var expect = require('chai').expect;
describe('test login', function() {
var nightmare = Nightmare({show: true})
after(function*() {
yield nightmare.end();
})
it('should login given right credentials', function*() {
this.timeout(50000);
console.log("running test");
var link = yield nightmare
.goto('http://127.0.0.1:3000/login')
.wait(1000)
.type('.email-field', 'username@email.com')
.type('.password-field', 'password')
.click('.login button')
.wait(1000)
});
})我使用:mocha运行测试
测试运行良好并关闭。但是,当我再次运行时,用户会在登录时启动。是否有清除缓存或本地存储的噩梦?
电子有一种通过session.clearCache (http://electron.atom.io/docs/v0.32.0/api/session/)清除会话信息的方法,但我不知道如何从噩梦中访问会话对象。
发布于 2015-12-09 03:58:13
好的,我们可以使用电子的网络偏好属性。
var nightmare = Nightmare({
show: false,
webPreferences: {
partition: 'nopersist'
}
});当启动噩梦时,使用‘when’分区属性来处理会话。更多信息在这里:https://github.com/atom/electron/blob/master/docs/api/browser-window.md。is的要点如下:
该页面将使用一个持久会话,该会话对应用程序中具有相同分区的所有页面都可用。如果没有持久化:前缀,页面将使用内存中的会话.
所以基本上,如果你把噩梦写成:
var nightmare = Nightmare({
show: false,
webPreferences: {
partition: 'persist:derp'
}
});然后会话将保持在'derp‘下,当您在经过身份验证的路由中测试特性时,这可能会有所帮助。(derp并不重要,可以是持久化之后的任何内容:)
如果不希望会话持久化,请不要使用:。我使用的是,,但这可能是没有持久化前缀的任何字符串:
编辑: show:false对会话没有意义,它只是显示了设置show:true时电子(噩梦使用的电子)在做什么,但这一行可以删除
https://stackoverflow.com/questions/33944837
复制相似问题