【问题标题】:Protractor: Open new webdriver after every describe?量角器:每次描述后打开新的网络驱动程序?
【发布时间】:2014-02-02 15:25:53
【问题描述】:

每次描述后我都需要打开一个新的网络驱动程序(我运行 e2e 测试)

原因是我需要清除浏览器缓存(不是 cookie),

每次我尝试使用 ptor.quit() / browser.driver.quit() 时,我都会收到此异常:

“错误:此驱动程序实例没有有效的会话 ID(您是 调用 WebDriver.quit()?) 并且可能不再使用。”​​

【问题讨论】:

  • 如果您在 chrome 上进行测试,您可以尝试在隐身模式下运行它。 capabilities: { 'browserName': 'chrome', 'chromeOptions': { 'args': ['incognito'] } }
  • 如果您需要截屏等,请小心。由于隐私功能,隐身模式可能会阻止某些功能。

标签: javascript angularjs jasmine protractor


【解决方案1】:

您不应该在每个 describe 之后启动新的 webDriver 会话,而应反过来使用 Jasmine 提供的 afterAll() 功能,该功能会在 describe 中的所有规范完成运行后运行。换句话说,afterAll() 在每个描述之后运行,足以满足您的需要。在描述中完成所有规范后不要退出,因为它会停止 webdriver 执行本身。这是怎么做的 -

afterAll(function() {
    browser.executeScript('window.sessionStorage.clear();'); //clear session
    browser.executeScript('window.localStorage.clear();'); //clear local storage
});

【讨论】:

  • 我应该退出();或在我的测试结束后关闭 beowser 以避免 jasmine 超时错误?
  • @Emna 如果您遇到 Jasmine 超时错误,那么您需要查看并修复它而不是关闭浏览器,这不是一个好习惯。
  • 我仍然有同样的问题,我尝试了很多方法来修复它,比如增加 jasmineNodeOpts 中的 defaulttimeout,我也尝试制作 brwser.sleep(5000);等到网站加载完毕!我也试过 allScriptsTimeout: 15000。但我总是有同样的问题:在登录的那一刻,它很好的登录按钮被点击,然后用户被重定向到主页,我想点击一个按钮,但第二次测试也失败了
  • @Emna 请使用您面临问题的代码更新您的问题或提出新问题,以便人们提供帮助。
  • 这是我的问题,我正在更新它,我现在将更新代码stackoverflow.com/questions/37008132/…
【解决方案2】:

您可能想清空浏览器的本地存储空间吗?

afterEach(function() {
    browser.executeScript('window.sessionStorage.clear();');
    browser.executeScript('window.localStorage.clear();');
});`

【讨论】:

    猜你喜欢
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多