Javascript 清除噩梦中的缓存(Electron)

Javascript 清除噩梦中的缓存(Electron),javascript,local-storage,electron,nightmare,Javascript,Local Storage,Electron,Nightmare,我使用噩梦js登录到一个在本地存储中设置令牌的站点。但是,我运行的任何未来测试用户都已登录。我猜本地存储区没有被清理。有没有办法做到这一点?我在test.js中的代码 require('mocha-generators').install(); var Nightmare = require('nightmare'); var expect = require('chai').expect; describe('test login', function() { var nightmar

我使用噩梦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

测试运行正常并关闭。但是,当我再次运行时,用户开始登录。在噩梦EJS中是否有清除缓存或本地存储的方法


Electron有一种方法可以通过
session.clearCache
()清除会话信息,但我不知道如何从噩梦中访问会话对象。

好吧,我们可以使用Electron的“web首选项”属性

var nightmare = Nightmare({
  show: false,
  webPreferences: {
    partition: 'nopersist'
  }
});
启动噩梦时,请使用“web prefences”分区属性来处理会话。更多信息请点击此处:。其要点如下:

该页面将使用一个持久会话,该会话可用于应用程序中具有相同分区的所有页面。如果没有persist:前缀,则页将使用内存会话

因此,基本上如果您将噩梦初始化为:

var nightmare = Nightmare({
  show: false,
  webPreferences: {
    partition: 'persist:derp'
  }
});
然后会话将在“derp”下持久化,当您在经过身份验证的路由内测试功能时,这会很有帮助。(derp不显著,可以是以下任何内容:持续:)

如果不希望会话持久化,请不要使用持久化:。我使用的是nopersist,但这可以是任何没有前缀persist:


编辑:
show:false
对会话没有意义,它只显示了如果您设置
show:true
,electron(噩梦使用的)正在做什么,但这行可以删除

您明白了吗?只是想知道。谢谢。@FelixG回答如下:似乎属性名实际上是webPreferences,而不是web Preferences依赖于噩梦的版本,他们可能已经将其更新为新版本。Maksim hi5!webPreferences itis@Saad更新你的答案。正确的属性现在是
webPreferences