protractor icon indicating copy to clipboard operation
protractor copied to clipboard

Getting the ERROR "This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used." When I try to use restart() or close() method

Open Avijoy7 opened this issue 3 years ago • 2 comments

Hi there!

I am trying to execute an extremely simple code. No page object, no method calling from different classes , no customizing configuration file. I am just trying to open a browser, then close it and then open a new browser instance. #My Conf.js file is :

exports.config = {
  //directConnect: true,
  framework: 'jasmine2',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
}

#My spec file is:

const { browser, protractor } = require("protractor");
describe('abcd',  () => {
    it('Restart the browser', () => {
        browser.get('https://material.angular.io/')
        .then(()=>(browser.restart()))
        .then(()=>(browser.get('https://material.angular.io/')));
    });
       it ('2', async  () => {
        await browser.waitForAngularEnabled(false);
        await browser.get('https://www.google.com');
        await element(by.xpath("//input[@name='q']")).sendKeys('asdaf');
        await browser.close();
    });`
});

I want to close the browser after each It block and open a new instance of a browser in the next It block. I know that we can use restartAfterEachTest in the configuration file to restart browsers, but I am not looking for that, I want to close and open browsers from my Spec file.

If I use browser.restart() it shows me the is error "This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used." and the IT block is failed.

If I use browser.close() , the first It block is passing but all subsequent It blocks are getting failed immediately and the error is "Invalid Session ID".

Looking for a solution, thanks in advance

Avijoy7 avatar May 28 '22 07:05 Avijoy7

@Avijoy7 : You can use afterEach function to achieve this

afterEach (function(){
        driver.close();
    });

sopansagorkar avatar Jul 13 '22 06:07 sopansagorkar

@Avijoy7 : You can use afterEach function to achieve this

afterEach (function(){
        driver.close();
    });

I have already mentioned in the description that methods like, restart(), close(), quit() are not working. It's not about creating another block of afterEach. anyways, thanks for your help

Avijoy7 avatar Jul 15 '22 07:07 Avijoy7