2015-11-26 36 views
9

Tôi đang sử dụng js cơn ác mộng để đăng nhập vào trang web đặt mã thông báo trong bộ nhớ cục bộ. Tuy nhiên, bất kỳ thử nghiệm nào trong tương lai, tôi chạy người dùng đã đăng nhập. Tôi đoán rằng bộ nhớ cục bộ không bị xóa. Có cách nào để làm điều này không? Mã của tôi trong test.jsxóa bộ nhớ cache trong Nightmare.js (Electron)

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', '[email protected]') 
     .type('.password-field', 'password') 
     .click('.login button') 
     .wait(1000) 

    }); 
}) 

tôi chạy thử nghiệm sử dụng: mocha

các thử nghiệm chạy tốt và đóng cửa. Tuy nhiên khi tôi chạy một lần nữa người dùng bắt đầu như đăng nhập. Có anyway để xóa bộ nhớ cache hoặc lưu trữ địa phương trong nightmarejs?

Electron có cách xóa thông tin phiên qua session.clearCache (http://electron.atom.io/docs/v0.32.0/api/session/) nhưng tôi không biết cách truy cập đối tượng phiên từ cơn ác mộng.

+0

Bạn có tìm ra nó không? Chỉ cần tự hỏi. Cảm ơn. – Felix

+0

@ FelixG trả lời dưới đây – Saad

Trả lời

11

Được rồi, chúng tôi có thể sử dụng thuộc tính 'Tùy chọn web của điện tử'.

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

khi bắt đầu sử dụng cơn ác mộng 'web-prefences' để xử lý phiên. thêm thông tin tại đây: https://github.com/atom/electron/blob/master/docs/api/browser-window.md. Ý chính của như sau:

trang sẽ sử dụng phiên kiên trì có sẵn cho tất cả các trang trong ứng dụng có cùng phân vùng. nếu không có tiền tố: tiền tố, trang sẽ sử dụng phiên trong bộ nhớ.

nên về cơ bản nếu bạn init cơn ác mộng như:

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

sau đó phiên sẽ kéo dài dưới 'derp', điều này có thể hữu ích khi bạn đang thử nghiệm tính năng bên trong các tuyến đường được chứng thực. (Derp là không đáng kể, có thể là bất cứ điều gì sau tồn tại:)

nếu bạn không muốn phiên để kéo dài không sử dụng tồn tại:. Tôi sử dụng nopersist nhưng điều này có thể là bất kỳ chuỗi mà không được bắt đầu bằng tồn tại:

EDIT:show:false là không đáng kể cho phiên làm việc, nó chỉ cho thấy những gì điện tử (mà cơn ác mộng sử dụng) đang làm nếu bạn đặt show:true, nhưng dòng này có thể bị xóa

+2

Có vẻ như tên thuộc tính thực sự là webPreferences, không phải tùy chọn web –

+0

phụ thuộc vào phiên bản của cơn ác mộng, họ có thể đã cập nhật nó cho phiên bản mới hơn. – Saad

+0

hi5 của hi5! webĐề xuất nó là –

Các vấn đề liên quan