gpt4 book ai didi

javascript - 清除 Nightmare.js (Electron) 中的缓存

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:48 25 4
gpt4 key购买 nike

我正在使用 nightmare js 登录一个在本地存储中设置 token 的站点。但是,我运行用户的任何 future 测试都已经登录。我猜本地存储没有被清除。有什么办法吗?我在 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

测试运行良好并关闭。但是,当我再次运行时,用户以登录状态开始。无论如何要清除 nightmarejs 中的缓存或本地存储吗?

Electron 有办法通过 session.clearCache ( http://electron.atom.io/docs/v0.32.0/api/session/ ) 清除 session 信息,但我不知道如何从 nightmare 访问 session 对象。

最佳答案

好吧,我们可以使用 Electrons 的“web-preferences”属性。

var nightmare = Nightmare({
show: false,
webPreferences: {
partition: 'nopersist'
}
});

当发起 Nightmare 时,使用“web-prefences”分区属性来处理 session 。更多信息在这里:https://github.com/atom/electron/blob/master/docs/api/browser-window.md .其要点如下:

the page will use a persistent session available to all pages in the app with the same partition. if there is no persist: prefix, the page will use an in-memory session.

所以基本上如果你将 Nightmare 初始化为:

var nightmare = Nightmare({
show: false,
webPreferences: {
partition: 'persist:derp'
}
});

然后 session 将在“derp”下持续存在,当您在经过身份验证的路由中测试功能时,这会很有帮助。 (derp 并不重要,可以是 persist: 之后的任何内容)

如果您不希望 session 持续存在,请不要使用persist:。我使用 nopersist 但这可以是任何不以 persist:

为前缀的字符串

编辑: show:false 对 session 来说并不重要,如果您设置 show:true,它只是显示 electron( Nightmare 使用的)正在做什么,但是这一行可以去掉

关于javascript - 清除 Nightmare.js (Electron) 中的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33944837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com