使用Protractor multiCapabilities配置运行e2e测试但限制最大Webdriver实例

gle*_*tre 14 integration-testing angularjs selenium-webdriver protractor

上下文

我正在尝试使用multiCapabilities配置选项的全新Protractor 0.19.0.它实际上正如文档中所描述的那样工作:

  1. 它使得在多个浏览器上运行测试更容易(不需要grunt,也不需要脚本,只需要1个配置文件).
  2. 它使测试并行运行

第二点对我来说是个问题.我的一个应用程序不处理与数据的多个连接,这意味着测试失败.

我的问题是:

是否可以限制Webdriver的最大实例数以禁用此应用程序的并行测试?

我试过了什么

我在Selenium Webdriverjs Grid2维基中找到了一个maxSession非常适合我的情况的参数!但我试图在我的Protractor配置中添加它,但没有成功.

maxSession也是所需的能力.谁知道它是否正常工作?

这是multiCapabilities PR主题的链接,我在那里留下了评论.

如果您需要更多信息,请随时问:)

提前致谢!!

编辑:专门的GitHub问题

编辑2:我最近试图添加seleniumArgs: ['-maxSession=1']到我的Protractor配置,不幸的是这也不起作用...

gle*_*tre 20

此提交中实现并在0.24.0中发布(请参阅Protractor更改日志).

您需要在maxSessions量程器配置文件中添加一个值> = 1的选项(否则它被视为无限制).

protractor.config.js示例:

exports.config = {
  seleniumAddress: 'http://127.0.0.1:4444/wd/hub',

  specs: [
    '../e2e/**/*.js'
  ],

  multiCapabilities: [
    {'browserName': 'chrome'},
    {'browserName': 'firefox'},
    {'browserName': 'phantomjs'}
  ],

  maxSessions: 1,

  baseUrl: 'http://localhost:8000'
};
Run Code Online (Sandbox Code Playgroud)

对我的案例进行了测试和工作.

  • 对于那些使用`grunt-protractor-webdriver`的人:默认情况下这种方法不起作用,因为`keepAlive`默认为`false`.明确地将其设置为"true"就可以了. (2认同)