我有2个测试用户(将添加更多)。一些spec文件使用一个,另一个使用另一个。如果两个测试用例使用相同的测试用户,则它们可以一起运行。 我想在selenium网格中执行所有规范。我最终决定使用一个带有一个chrome实例的spec用户和另一个带有另一个chrome实例的spec用户对spec文件进行分组。 (现在我将只使用一个chrome版本) 现在问题是两个chrome浏览器都是相同的版本。如何将两组测试用例分开并行运行。例如,测试用户1个案例将在Chrome实例1和Chrome实例2上的另一组测试用例上运行。我添加了一个任意的browser_version来分隔多个功能中的2组。我认为它不起作用。 对此有一个优雅的解决方案。 为了进行调试,我尝试在测试中使用以下行测试浏览器verison特定测试。它可能不可能。
(browser.multiCapabilities["browser_version"]).then(function(v){
console.log("check:" + v);
})
但它给出了错误。无法阅读属性' browser_version'未定义的。
以下是量角器配置文件的多功能性。我不使用" 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']
}],
答案 0 :(得分:4)
尝试以下multiCapabilities配置。这对我来说很好。
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上执行。
答案 1 :(得分:0)
谢谢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']
}]
这似乎消除了日志文件中2个功能之间的任何混淆,因为每行都有特定规范的日志名,以显示执行它的功能。我只是想知道在Sudarshan的案例中他可能有不同版本的量角器等。
最后,您甚至可以在代码中打印您的功能(从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);
});