Protractor 使用量角器并行/并发测试执行

Protractor 使用量角器并行/并发测试执行,protractor,automated-tests,Protractor,Automated Tests,我有2个测试用户(将添加更多)。某些等级库文件使用其中一个等级库文件,另一些等级库文件使用另一个等级库文件。如果使用相同的测试用户,则没有两个测试用例可以一起运行。 我想在selenium网格中执行我的所有规范。我最终决定使用一个spec用户和一个chrome实例以及另一个chrome实例对spec文件进行分组。(目前我只使用一个chrome版本) 现在的问题是,两个chrome浏览器都是相同的版本。如何将这两组测试用例分开并行运行。例如,测试用户1案例将在Chrome实例1上运行,另一组测试案

我有2个测试用户(将添加更多)。某些等级库文件使用其中一个等级库文件,另一些等级库文件使用另一个等级库文件。如果使用相同的测试用户,则没有两个测试用例可以一起运行。 我想在selenium网格中执行我的所有规范。我最终决定使用一个spec用户和一个chrome实例以及另一个chrome实例对spec文件进行分组。(目前我只使用一个chrome版本) 现在的问题是,两个chrome浏览器都是相同的版本。如何将这两组测试用例分开并行运行。例如,测试用户1案例将在Chrome实例1上运行,另一组测试案例将在Chrome实例2上运行。我添加了一个任意浏览器版本来分隔multicapabilities中的2组。我认为它不起作用。 有没有一个优雅的解决方案。 为了进行调试,我尝试在特定测试中使用浏览器verison,测试中有以下几行代码。这可能是不可能的

(browser.multiCapabilities["browser_version"]).then(function(v){
  console.log("check:" + v);
})
)

但它给出了错误。无法读取未定义的属性“browser\u version”

以下是量角器配置文件multicapabilities。我不在这个级别上使用“specs”属性

maxSessions: 2,
multiCapabilities: [
{
  'browserName': 'chrome',
  'browser_version': '11.0',
  shardTestFiles: false,
  maxInstances: 1,
  maxSessions: 1,
  count: 1,
  specs: [ 'test/e2e/VE1-Spec.js', 'test/e2e/VE2-Spec.js' ]
}, {
  shardTestFiles: false,
  'browserName': 'chrome',
  'browser_version': '9.0',
  maxInstances: 1,
  maxSessions: 1,
  count: 1,

  specs: ['test/e2e/DG1-Spec.js', 'test/e2e/DG2-Spec.js']
}],

尝试以下多容量配置。这对我来说很好

multiCapabilities: [
    {
        shardTestFiles: true,
        maxInstances: 1,
        sequential: true,
        browserName: 'chrome',
        specs: ['specs/spec1.js','specs/spec2.js','specs/spec3.js']
    },
    {
        shardTestFiles: true,
        maxInstances: 1,
        sequential: true,
        browserName: 'chrome',
        specs: ['specs/spec4.js',
            'specs/spec5.js',
            'specs/spec6.js',
        ]
    }

上述配置将启动两个chrome实例,并在chrome实例1上执行spec1、spec2和spec3。其余3个规格将在chrome实例2上执行。

尝试以下多容量配置。这对我来说很好

multiCapabilities: [
    {
        shardTestFiles: true,
        maxInstances: 1,
        sequential: true,
        browserName: 'chrome',
        specs: ['specs/spec1.js','specs/spec2.js','specs/spec3.js']
    },
    {
        shardTestFiles: true,
        maxInstances: 1,
        sequential: true,
        browserName: 'chrome',
        specs: ['specs/spec4.js',
            'specs/spec5.js',
            'specs/spec6.js',
        ]
    }

上述配置将启动两个chrome实例,并在chrome实例1上执行spec1、spec2和spec3。剩下的3个规范将在chrome实例2上执行。

谢谢Sudharsan。我没有在量角器中找到任何关于“顺序”属性的文档。评论也使它起了作用。
但是,当我尝试以下操作时,它起了作用:

maxSessions: 2,
multiCapabilities: [
{
  browserName: 'chrome',
   name: 'CAPABILITY_1',
   logName: 'LOGNAME1_USERNAME1_A',
  shardTestFiles: false,
  maxInstances: 1,
  maxSessions: 1,
  count: 1,
  specs: [ 'test/e2e/VE1-Spec.js', 'test/e2e/VE2-Spec.js' ]
}, {
  shardTestFiles: false,
  'browserName': 'chrome',
   name: 'CAPABILITY_2',
   logName: 'LOGNAME1_USERNAME2_BB,
  maxInstances: 1,
  maxSessions: 1,
  count: 1,
  specs: ['test/e2e/DG1-Spec.js', 'test/e2e/DG2-Spec.js']
}]
这似乎消除了日志文件中两个功能之间的任何混淆,因为每一行都有特定规范的日志名,以显示执行它的功能。我只是想知道在苏达珊的情况下,他可能有一个不同版本的量角器等等

最后,您甚至可以在代码中打印您的功能(在github的config.ts中找到),以确保其正常工作

browser.getProcessedConfig().then(function(config) {
  // config.capabilities is the CURRENT capability being run, if
  // you are using multiCapabilities.
  console.log('Executing capability', config.capabilities);
});

谢谢苏达桑。我没有在量角器中找到任何关于“顺序”属性的文档。评论也使它起了作用。
但是,当我尝试以下操作时,它起了作用:

maxSessions: 2,
multiCapabilities: [
{
  browserName: 'chrome',
   name: 'CAPABILITY_1',
   logName: 'LOGNAME1_USERNAME1_A',
  shardTestFiles: false,
  maxInstances: 1,
  maxSessions: 1,
  count: 1,
  specs: [ 'test/e2e/VE1-Spec.js', 'test/e2e/VE2-Spec.js' ]
}, {
  shardTestFiles: false,
  'browserName': 'chrome',
   name: 'CAPABILITY_2',
   logName: 'LOGNAME1_USERNAME2_BB,
  maxInstances: 1,
  maxSessions: 1,
  count: 1,
  specs: ['test/e2e/DG1-Spec.js', 'test/e2e/DG2-Spec.js']
}]
这似乎消除了日志文件中两个功能之间的任何混淆,因为每一行都有特定规范的日志名,以显示执行它的功能。我只是想知道在苏达珊的情况下,他可能有一个不同版本的量角器等等

最后,您甚至可以在代码中打印您的功能(在github的config.ts中找到),以确保其正常工作

browser.getProcessedConfig().then(function(config) {
  // config.capabilities is the CURRENT capability being run, if
  // you are using multiCapabilities.
  console.log('Executing capability', config.capabilities);
});

请看下面我的解决方案。请看下面我的解决方案。仅执行
量角器conf.js
,是否有效?或者还需要什么吗?只需执行
量角器conf.js
?或者还需要什么?