Жасмин - перезапустить браузер между тестами (он блокирует) - PullRequest
0 голосов
/ 22 февраля 2019

В нашей платформе Protractor + Jasmine попытка перезапустить браузер между тестами для разных пользователей.Так как у нас есть неугловая страница входа в систему и после входа в систему ее перейдите на угловую страницу.Ниже приведен мой основной файл спецификации теста

describe('User Permissions', function() {
	var docsLoginPage = require('../pages/CLM_Page.js');
	var projectsPage = require('../pages/Projects_Page.js');
	var contentPage = require('../pages/Content_Page.js');
	
	beforeEach(function() {
		browser.ignoreSynchronization = true;
		browser.get('http://be-docs-dev.xyz.local/');
	  });
	
	  it('Verify permissions for Non Admin and Read only permission group user', function() {
		  docsLoginPage.loginToDocs("sipqa4@xyz.com","Yahoo@123");
		  expect(browser.getTitle()).toEqual('abc');
		  browser.ignoreSynchronization = false;
		  expect(projectsPage.checkElementExistsById('headers_nav_projects')).toBe(false);
		  expect(contentPage.checkElementExistsById("content_browse_options_folder_settings")).toBe(false);
		  expect(contentPage.checkElementExistsById('content_browse_options_new_menu')).toBe(false);	  
	  });
	 
     it('Verify permissions for Project collaborator Non Admin and Read only permission group user', function() {
    	 /*browser.restart().then(function(){
    		 console.log("-----------Restarted the browser---------------");
    	 });*/
		  docsLoginPage.loginToDocs("sipqa2@xyz.com","Yahoo@123");
		  expect(browser.getTitle()).toEqual('abc');
		  browser.ignoreSynchronization = false;
		  expect(projectsPage.checkElementExistsById('headers_nav_content')).toBe(false);
		  expect(contentPage.checkElementExistsById("projects_browse_options_folder_settings")).toBe(false);
		  expect(contentPage.checkElementExistsById('projects_browse_options_new_menu')).toBe(false);
		  
	  });
	  
	});

И CLM_Page.js

var CLM_page = function() {
	this.userName = element(By.id('userName'));
	this.password = element(By.id('password'));
	this.signIn = element(By.className('btn btn-primary'));
	this.loginToDocs = function(userName, password) {
		browser.driver.manage().window().maximize();
		browser.driver.manage().timeouts().implicitlyWait(10000);
		this.userName.sendKeys(userName);
		this.signIn.click();
		this.password.sendKeys(password);
		return this.signIn.click();
	  };     
};
module.exports = new CLM_page();

В файле конфигурации установлено значение

restartBrowserBetweenTests: true

Первый блок выполняется правильно.Однако при выполнении second он блокирует перезапуск и закрытие браузера немедленно.Отображается следующая ошибка

Сбои: 1) Полномочия пользователя Проверка разрешений для участника проекта, не являющегося администратором, и пользователя группы разрешений только для чтения..quit ()?) и больше не может использоваться.Стек: NoSuchSessionError: Этот экземпляр драйвера не имеет действительного идентификатора сеанса (вы вызывали WebDriver.quit ()?) И ​​больше не может использоваться.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Проблема здесь в том, что сессия веб-драйвера закрывается после запуска теста.

Нет проблем с restartBrowserBetweenTests: true, так как ваш браузер перезапускается после первого теста.

Поскольку выпереходят от неуглового к угловому применению.Выполните следующие действия:

  browser.driver.get('http://localhost:8000/login.html');
  browser.driver.findElement(by.id('username')).sendKeys('Jane');
  browser.driver.findElement(by.id('password')).sendKeys('1234');
  browser.driver.findElement(by.id('clickme')).click();

Вы используете browser.ignoreSynchronization = true;, который был удаленПопробуйте использовать waitForAngularEnabled(true).

, чтобы сделать BeforEach() как

beforeEach(function() {
    browser.waitForAngularEnabled(false); // to tell protractor that this is a non- anularg page
    browser.get('http://be-docs-dev.xyz.local/');
  });

После перехода на угловую страницу установите его как browser.waitForAngularEnabled(true);.

Надеюсь, приведенный выше ответ поможетвы ...

0 голосов
/ 23 февраля 2019

Основываясь на дизайне тестового набора, вы можете добиться того же, установив restartBrowserBetweenTests: false в conf.js файле

, а также очищать куки браузера и сеанс из браузера после каждого запуска блока it.Пожалуйста, измените ваш существующий тестовый скрипт, добавив afterEach

, добавьте приведенный ниже фрагмент с существующим кодом

afterEach(function () {

  browser.manage().deleteAllCookies();
  browser.executeScript('window.sessionStorage.clear();window.localStorage.clear();');

});

beforeEach функция должна выглядеть как

beforeEach(function() {
    browser.waitForAngularEnabled(false);
    browser.get('http://be-docs-dev.xyz.local/');
});

In conf.js.

Note: Значение по умолчанию: false.Поэтому не обязательно устанавливать его как false

exports.config = {

 ...
 restartBrowserBetweenTests: false,
 ...
}

Если вы устанавливаете restartBrowserBetweenTests: true, это приведет к резкому замедлению ваших тестов.Пожалуйста, обратитесь это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...