Selenium webdriver Jasmine-在测试之间重新启动浏览器(it块)

Selenium webdriver Jasmine-在测试之间重新启动浏览器(it块),selenium-webdriver,jasmine,protractor,jasmine2.0,Selenium Webdriver,Jasmine,Protractor,Jasmine2.0,在我们的Drugator+Jasmine框架中,尝试在不同登录用户的测试之间重新启动浏览器。因为我们有非角度登录页面,登录后导航到角度页面。下面是我的主要测试规范文件 description('User Permissions',function()){ var docsLoginPage=require('../pages/CLM_Page.js'); var projectsPage=require('../pages/Projects_Page.js'); var contentPage

在我们的Drugator+Jasmine框架中,尝试在不同登录用户的测试之间重新启动浏览器。因为我们有非角度登录页面,登录后导航到角度页面。下面是我的主要测试规范文件

description('User Permissions',function()){
var docsLoginPage=require('../pages/CLM_Page.js');
var projectsPage=require('../pages/Projects_Page.js');
var contentPage=require('../pages/Content_Page.js');
beforeach(函数(){
browser.ignoreSynchronization=true;
browser.get('http://be-docs-dev.xyz.local/');
});
它('验证非管理员和只读权限组用户的权限',函数(){
docsLoginPage.loginToDocs(“sipqa4@xyz.com","Yahoo@123");
expect(browser.getTitle()).toEqual('abc');
browser.ignoreSynchronization=false;
expect(projectsPage.checkElementExistsById('headers\u nav\u projects')).toBe(false);
expect(contentPage.checkElementExistsById(“内容\浏览\选项\文件夹\设置”)).toBe(false);
expect(contentPage.checkElementExistsById('content\u browse\u options\u new\u menu')).toBe(false);
});
它('验证项目协作者非管理员和只读权限组用户的权限',函数(){
/*browser.restart()。然后(函数()){
console.log(“------------重新启动浏览器------------------”);
});*/
docsLoginPage.loginToDocs(“sipqa2@xyz.com","Yahoo@123");
expect(browser.getTitle()).toEqual('abc');
browser.ignoreSynchronization=false;
expect(projectsPage.checkElementExistsById('headers\u nav\u content')).toBe(false);
expect(contentPage.checkElementExistsById(“项目\浏览\选项\文件夹\设置”)).toBe(false);
expect(contentPage.checkElementExistsById('projects\u browse\u options\u new\u menu')).toBe(false);
});

});根据您的测试用例设计,您可以通过在
conf.js
文件中设置
restartbrowserveentextests:false
来实现相同的功能

并且在每次
it
block运行后从浏览器中清除浏览器cookie和会话。请通过添加来修改现有测试脚本

使用现有代码添加以下代码段

afterEach(function () {

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

});
之前每个
函数应该是

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

注意:
默认值为
false
。因此,不强制将其设置为
false

exports.config = {

 ...
 restartBrowserBetweenTests: false,
 ...
}

如果您正在设置测试之间的重启浏览器:true
,这将导致测试速度急剧降低。请参考

根据您的测试用例设计,您可以通过在
conf.js
文件中设置
restartbrowserveentextests:false
来实现相同的功能

并且在每次
it
block运行后从浏览器中清除浏览器cookie和会话。请通过添加来修改现有测试脚本

使用现有代码添加以下代码段

afterEach(function () {

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

});
之前每个
函数应该是

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

注意:
默认值为
false
。因此,不强制将其设置为
false

exports.config = {

 ...
 restartBrowserBetweenTests: false,
 ...
}

如果您正在设置测试之间的重启浏览器:true,这将导致测试速度急剧降低。请参阅

这里的问题是webdriver会话在启动测试后关闭

restartBrowserBetweentTests: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)


希望上面的答案能帮助您……

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

restartBrowserBetweentTests: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)


希望上面的答案能帮助您…

@jithinkmatthew-尝试了您的解决方案,但浏览器仍与第一个登录实例的用户保持相同,并尝试查找登录名page@jithinkmatthew-尝试了您的解决方案,但浏览器仍保持在第一个登录的用户实例中,并尝试查找登录页。这可能会有所帮助:是否没有退出按钮会带你回到主登录页吗?@Barney-我尝试了browser.restart()。但它在非角度登录页面上失败了。@DublinDev-我尝试了谷歌建议的几乎所有解决方案。对我来说什么都不管用。作为一个解决方案,我现在使用注销:(这可能会有帮助:没有注销按钮可以让你返回主登录页面吗?@Barney-我尝试了browser.restart()。但在非角度登录页面上失败。@DublinDev-我尝试了谷歌建议的几乎所有解决方案。对我来说没有任何效果。作为一个解决方案,我现在使用注销:(