Jasmine - 在测试之间重启浏览器(它阻止)

问题描述 投票:0回答:2

在我们的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("[email protected]","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("[email protected]","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();

在conf文件中设置为

restartBrowserBetweenTests:true

首先它正在执行块。然而,当执行第二次时,它会阻止浏览器立即重启和关闭。显示以下错误

失败:1)用户权限验证项目协作者非管理员和只读权限组用户的权限消息:失败:此驱动程序实例没有有效的会话ID(您是否调用了WebDriver.quit()?)并且可能不再使用。 Stack:NoSuchSessionError:此驱动程序实例没有有效的会话ID(您是否调用了WebDriver.quit()?)并且可能不再使用它。

selenium-webdriver jasmine protractor jasmine2.0
2个回答
0
投票

这里的问题是webdriver会话在开始测试后关闭。

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

您正在使用不推荐使用的qazxsw poi。尝试使用qazxsw poi。

browser.ignoreSynchronization = true;成为

waitForAngularEnabled(true)

移动到角度页面后,使其成为BeforEach()

希望以上答案可以帮助你......


0
投票

根据您的测试用例设计,您可以通过在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);来实现相同的目的

并且在每个restartBrowserBetweenTests: false块运行后,还要从浏览器中清除浏览器cookie和会话。请添加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/'); }); 默认值为conf.js。因此,不必将其设置为Note:

false

如果你设置false,这将导致你的测试大幅减慢。请参考exports.config = { ... restartBrowserBetweenTests: false, ... }

© www.soinside.com 2019 - 2024. All rights reserved.