首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nightmare.js (电子)中的清晰缓存

Nightmare.js (电子)中的清晰缓存
EN

Stack Overflow用户
提问于 2015-11-26 18:11:04
回答 1查看 4.9K关注 0票数 10

我正在使用梦魇js登录到一个在本地存储中设置令牌的站点。但是,我以后运行的任何测试都已经登录了。我猜当地的储藏室没被清空。有办法这样做吗?我在test.js中的代码

代码语言:javascript
复制
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/)清除会话信息的方法,但我不知道如何从噩梦中访问会话对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-09 03:58:13

好的,我们可以使用电子的网络偏好属性。

代码语言:javascript
复制
var nightmare = Nightmare({
  show: false,
  webPreferences: {
    partition: 'nopersist'
  }
});

当启动噩梦时,使用‘when’分区属性来处理会话。更多信息在这里:https://github.com/atom/electron/blob/master/docs/api/browser-window.md。is的要点如下:

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

所以基本上,如果你把噩梦写成:

代码语言:javascript
复制
var nightmare = Nightmare({
  show: false,
  webPreferences: {
    partition: 'persist:derp'
  }
});

然后会话将保持在'derp‘下,当您在经过身份验证的路由中测试特性时,这可能会有所帮助。(derp并不重要,可以是持久化之后的任何内容:)

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

编辑: show:false对会话没有意义,它只是显示了设置show:true时电子(噩梦使用的电子)在做什么,但这一行可以删除

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33944837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档