2017-12-27 5 views
0

Ich habe Folgendes verwendet, aber ich bekomme Diese Treiberinstanz hat keine gültige Sitzungs-ID (haben Sie WebDriver.quit() aufgerufen?) und darf nicht mehr verwendet werden. Kann mir jemand helfen?Wie können wir Winkelmesser beforeAll und afterAll Haken zum Öffnen und Schließen eines Browsers in jedem beschreibenden Block verwenden

Sample.js-Datei, die den folgenden Code hat:

describe('angularjs homepage', function() { 
    beforeAll(function(){ 
     browser.get('https://xxxx/'); 
     console.log('calling before all'); 
    }); 

    afterAll(function(done){ 
     console.log('calling after all'); 
     browser.quit(); 
     process.nextTick(done); 
    }); 

Eine andere Datei, die den gleichen Code hat auch:

describe('angularjs homepage', function() { 
     beforeAll(function(){ 
      browser.get('https://xxxx/'); 
      console.log('calling before all'); 
     }); 

     afterAll(function(done){ 
      console.log('calling after all'); 
      browser.quit(); 
      process.nextTick(done); 
     }); 

Jetzt beforeAll und afterall Funktionen nutzen möchte ich durch welchen Browser sollte in jeder js Dateiausführung geöffnet und geschlossen werden. Wenn ich diesen Ansatz befolge, erhalte ich den Fehler as Diese Treiberinstanz hat keine gültige Sitzungs-ID (hat sie WebDriver.quit() aufgerufen?) Und darf nicht mehr verwendet werden.

+1

Verwenden Sie 'browser.close()'. –

+0

Ich benutzte das gleiche, aber das Problem bleibt gleich. Ich möchte den Browser für jeden beschreibenden Block öffnen und schließen. – man1004

Antwort

0

Es ist schwer zu verstehen, was genau Sie fragen, weil Sie nur eine describe geschrieben haben, aber in den Kommentaren sehe ich Sie sagte, Sie wollen den Browser vor jeder describe öffnen. Angenommen, Sie haben describe Blöcke verschachtelt, können Sie einfach beforeEach() und afterEach() verwenden, um dies zu tun.

describe('some test',() => { 
    beforeAll(() => { 
    //some setup code 
    } 

    beforeEach(() => { 
    browser.get('https://xxxx/'); 
    } 

    afterEach(() => { 
    browser.restart(); 
    } 

    afterAll(() => { 
    //some tear down code 
    } 

    describe('something',() => { 
    it('should test something',() => { 
     //test code 
    } 
    } 

    describe('another thing',() => { 
    it('should test another thing',() => { 
     //test code 
    } 
    } 
} 

In dem obigen Beispiel der Reihenfolge der Ausführung wäre:

describe 
beforeAll 
beforeEach (open browser) 
describe - something 
it - should test something 
afterEach (close browser) 
beforeEach (open browser) 
describe - another thing 
it - should test another thing 
afterEach (close browser) 
afterAll 

Es gibt auch eine Winkelmesser Konfigurationsoption ist restartBrowserBetweenTests, die den Browser vor jedem Test neu gestartet, aber ich glaube nicht, das ist, was Sie fragen nach.

+0

Ich habe die ursprüngliche Frage bearbeitet. Bitte lassen Sie mich wissen, wenn es klar ist – man1004

+0

OK, versuchen Sie, Ihre 'browser.quit()' zu 'browser.restart()' und sehen, ob das hilft. – tehbeardedone

0

Ich denke, dass Sie brauchen: before und afterEach

Sie werden vor jeder „es“ Block ausführen innerhalb „beschreiben“.

Verwandte Themen