使用量角器运行并行测试时每个 Chrome 实例的自定义参数



在量角器中运行并行测试时,是否可以为每个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
}]
}

如果我答对了,你可以做的是在启动时将参数作为 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

两个选项之一已解决。但我仍然想知道是否有可能为每个实例使用自定义参数。

// 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];
}
});

最新更新