【问题标题】:How to restart protractor instance with a new session?如何使用新会话重新启动量角器实例?
【发布时间】:2015-05-22 12:23:46
【问题描述】:

我需要在我的测试中创建一个新的量角器会话。

我试过了:

browser.get()
browser.quit()
browser.get()

但它返回一个错误:

失败:此驱动程序实例没有有效的会话 ID(您是否调用了 WebDriver.quit()?)并且可能不再使用。

我也尝试使用 browser.createSession(),但它返回了我:

没有方法'createSession'

所以,我需要类似 restartBrowserBetweenTests 选项的东西,但我想调用测试的任何部分。先感谢您。

【问题讨论】:

    标签: angularjs testing automation protractor


    【解决方案1】:

    根据Using Multiple Browsers in the Same Test,你可以fork一个新的驱动实例:

    如果您正在测试两个浏览器需要相互交互的应用 其他(例如聊天系统),您可以使用量角器通过 在测试中动态创建浏览器。量角器 在浏览器对象中公开一个函数来帮助您实现这一点: browser.forkNewDriverInstance(opt_useSameUrl, opt_copyMockModules)。 调用它会返回一个新的独立浏览器对象。

    newBrowser = browser.forkNewDriverInstance();
    

    browser.driver.createSession() 也可能是相关的,具体取决于您要完成的工作。

    【讨论】:

    • 是的,谢谢,但这不完全是我不想使用新的 webdriver 对象,我想重新定义浏览器对象。另外我不知道为新的浏览器实例创建会话,因为 browser.browser.createSession 返回“没有这样的方法”
    【解决方案2】:

    在我们的例子中,我们得到了错误

    失败:此驱动程序实例没有有效的会话 ID(您是否调用了 WebDriver.quit()?)并且可能不再使用。

    使用时

    browser.restart()
    

    但在我们的一个测试页面对象中,有一个 static 变量指向一个 ElementFinder 对象。

    // This line caused the error once the browser was restarted
    private static readonly elementToFind = element(by.xpath("<someExpression>"));
    
    // we changed it to
    private elementToFind: ElementFinder = element(by.xpath("<someExpression>"));
    

    结论:检查您的代码中static 的使用情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 2018-04-09
      • 2011-08-09
      • 2011-10-21
      相关资源
      最近更新 更多