我们如何在每个描述块中使用量角器beforeAll和afterAll钩子来打开和关闭浏览器

时间:2017-12-27 09:40:53

标签: protractor

我使用了以下但是我得到这个驱动程序实例没有有效的会话ID(你调用了WebDriver.quit()吗?)并且可能不再使用了。有人可以帮忙吗。

Sample.js文件,其中包含以下代码:

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);
     });

另一个也具有相同代码的文件:

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);
         });

现在我想使用beforeAll和AfterAll函数,浏览器应该在每个js文件执行中打开和关闭。当我遵循这种方法时,我得到错误,因为此驱动程序实例没有有效的会话ID(您是否调用了WebDriver.quit()?)并且可能不再使用。

2 个答案:

答案 0 :(得分:1)

很难准确理解您的要求,因为您只发布了一个describe,但在评论中我看到您说您希望浏览器在每个describe之前打开。假设您已嵌套describe块,则可以使用beforeEach()afterEach()来执行此操作。

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
    }
  }
}

在上面的例子中,执行顺序为:

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

还有一个量角器配置选项restartBrowserBetweenTests,它会在每次测试之前重新启动浏览器,但我不认为这是你要求的。

答案 1 :(得分:0)

我认为您需要: 在每个和之前 afterEach

它们将在“describe”中的每个“it”块之前执行。