在Protractor中运行并行测试时,是否可以为每个Chrome实例传递自定义参数?我需要了解每个实例的远程调试端口,以便可以使用开发工具协议进行连接。
如我所见,有两个选择。将端口设置为每个实例的特定唯一值,或者让它自动设置并在准备测试时以某种方式获取它。这些选项中的任何一个都有可能吗?
exports.config = {
framework: 'jasmine',
chromeDriver: chromeDriverPath,
multiCapabilities: [{
browserName: 'chrome',
chromeOptions: {
args: process.env.HEADLESS && puppeteer ? ['--headless', `--remote-debugging-port=${DEV_TOOLS_PORT}`] : [`--remote-debugging-port=${DEV_TOOLS_PORT}`],
binary: puppeteer.executablePath()
},
shardTestFiles: true,
maxInstances: 1
}]
}
答案 0 :(得分:0)
解决了两个选项之一。但是我仍然想知道是否可以为每个实例使用自定义args。
// Get Remote debugging port for chrome
let chromeRemoteDebuggingPort;
browser.getCapabilities().then((capabilities) => {
const chromeOptions = capabilities.get('goog:chromeOptions');
if( chromeOptions && chromeOptions.debuggerAddress) {
chromeRemoteDebuggingPort = chromeOptions.debuggerAddress.split(':')[1];
}
});
答案 1 :(得分:0)
如果我没问题,您可以做的是在启动时将参数作为env变量传递给量角器。因此,您的配置将如下所示:
exports.config = {
framework: 'jasmine',
chromeDriver: chromeDriverPath,
multiCapabilities: [{
'browserName': 'chrome',
'chromeOptions': {
args: [`--remote-debugging-port=${process.env.PORT_ONE}`]
}
}, {
'browserName': 'chrome',
'chromeOptions': {
args: [`--remote-debugging-port=${process.env.PORT_TWO}`]
}
}]
}
然后使用这样的env变量开始量角器过程:
PORT_ONE=90 PORT_TWO=80 protractor protractor.conf.js