如何在Protractor中清除浏览器缓存

时间:2017-07-20 14:45:01

标签: selenium-webdriver protractor browser-cache

在我的一个场景中,我需要清除浏览器缓存。我尝试了下面的一个,但它没有工作。

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

有人可以帮我吗?

2 个答案:

答案 0 :(得分:7)

我这样使用它:

function LoginPage() {
  this.get = function() {
        browser.get('#/Login');
        browser.executeScript('window.localStorage.clear();');
        browser.executeScript('window.sessionStorage.clear();');
        browser.driver.manage().deleteAllCookies(); 
    }
}

module.exports = new LoginPage;

然后我在我的任何测试脚本中使用此功能,每次清除cookie,会话/本地存储。

var loginPage = require('.././LoginPage'); 
loginPage.get();

答案 1 :(得分:2)

首先,我建议在分叉浏览器中进行,这将简化您的调试工作

 var fork = browser.forkNewDriverInstance();
 fork.get('page1');

如果您仍然坚持清除所有内容,可以重新启动浏览器

 browser.restart(); // Restart the browser clears everything (careful as it returns Promise)
 browser.restartSync(); // Same as previous but synchronous == await browser.restart()

甚至更好地重启fork

 fork = fork.restartSync();
 fork.get('page2'); // 'page2' gotten by restarted fork

信息:https://github.com/angular/protractor/blob/master/lib/browser.ts#L537

P.S。不确定哪些部分你不能清楚,但作为最后的手段,我可​​以建议隐身模式

capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
      'args': ['incognito']
  }
},

信息:https://github.com/angular/protractor/blob/master/docs/browser-setup.md#adding-chrome-specific-options