量角器可用于测试多个浏览器会话交互吗?

sof*_*ave 8 angularjs protractor

例如,我想测试使用AngularJS实现的两个登录用户之间的聊天功能.

测试需要验证两个或多个单独的浏览器操作集以正确的顺序发生.例如,用户A登录,用户B登录,用户A看到B登录,用户A发送用户B聊天文本,用户B接收聊天文本.用户B响应用户A.

这是可以使用量角器完成的吗?如果没有,是否有另一种方法可以自动测试多个浏览器会话工作流程?

Leo*_*cci 12

更新此功能最终添加,请参阅此处的示例用法和文档测试,或参见下文:

browser.get('http://www.angularjs.org');

// To create a new browser with url as 'http://www.angularjs.org':
var browser2 = browser.forkNewDriverInstance(true);

// Interaction in the first browser
element(by.model(...)).click();

// Interaction in the second browser
browser2.$('.css').click();
Run Code Online (Sandbox Code Playgroud)

请注意,IE和Safari不会隔离cookie或缓存,因此除非您的selenium提供程序是始终使用SauceLabs或BrowserStack等干净会话的网格,否则不要期望能够同时在不同用户之间登录.


cha*_*shi 6

您可以在测试中打开其他窗口,并在这些窗口中执行操作和断言.您可以使用标准webdriverjs API执行此操作:

browser.getAllWindowHandles().then(function (handles) {

  // handle of first window
  var originalHandle = handles[0];

  // open new window
  browser.executeScript('window.open("https://angularjs.org/", "second-window")');

  // switch to new window
  browser.switchTo().window('second-window');

  // do something within context of new window

  // switch to original window
  browser.switchTo().window(originalHandle);

  // do something within context of original window

  // closes the current window
  browser.executeScript('window.close()');

});
Run Code Online (Sandbox Code Playgroud)

如果您使用会话cookie,这可能不适合您.两个窗口都可以获得相同的cookie.如果是这样,您将最终以两个窗口中的同一用户身份登录.一种解决方法是在不同的域上访问应用程序的第二个实例.例如,使用IP地址或在主机文件中设置新域.