如何使用新会话重新启动量角器实例?

时间:2015-03-19 11:45:53

标签: angularjs testing automation protractor

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

我试过了:

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

但它返回错误:

  

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

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

  

没有方法'createSession'

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

2 个答案:

答案 0 :(得分:4)

根据Using Multiple Browsers in the Same Test,您可以分叉一个新的驱动程序实例:

  

如果您正在测试两个浏览器需要与每个浏览器进行交互的应用   其他(例如聊天系统),你可以用量角器来做到这一点   在测试中随时随地动态创建浏览器。量角器   公开浏览器对象中的一个函数来帮助您实现这个目的:   browser.forkNewDriverInstance(opt_useSameUrl, opt_copyMockModules)。   调用此方法将返回一个新的独立浏览器对象。

newBrowser = browser.forkNewDriverInstance();

browser.driver.createSession()也可能具有相关性,具体取决于您要完成的任务。

答案 1 :(得分:0)

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

  

失败:此驱动程序实例没有有效的会话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