我们的基于AngularJS的项目有数量或Protractor / Jasmine规格.可以这样做:
afterAll(function(){
browser.restart();
}
清理规格之间的东西?
最佳答案 有一个内置设置 – restartBrowserBetweenTests:
// If true, protractor will restart the browser between each test.
// CAUTION: This will cause your tests to slow down drastically.
restartBrowserBetweenTests: false,
正如评论中所说 – 这会导致测试速度变慢 – 确保在测试之间重新启动浏览器的确有理由.请注意,该设置意味着使用每个it()重新启动浏览器,而不是describe().
请注意,internally restart()
分叉现有的驱动程序实例,退出当前驱动程序并重新初始化所有全局变量 – browser,element,$等.
在测试之间重新启动浏览器/驱动程序可能有不同的需求 – 例如,先前创建的cookie将完全丢失/删除.例如,这可能允许在每次测试后不显式注销以节省时间(不确定这一般是否良好).
So as a shortcut (till I will not find the real issue with promises) I want to just restart browser after each spec. I understand that it is a wrong approach in general, but want to use it as a temporary solution.
作为您的临时解决方案,为了实施测试隔离,我认为在每个测试套件之后重启浏览器是可以的.但是,请确保您不通过全局可用的浏览器对象共享任何变量 – 在每个测试中,您将获得一个全新的浏览器.
顺便说一句,您也可以尝试强制执行浏览器的私有/隐身模式:
multiCapabilities: [
{
browserName: "chrome",
chromeOptions: {
args: ["incognito", "disable-extensions"]
},
}
],