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

时间:2019-09-06 07:54:57

标签: selenium google-chrome parallel-processing protractor

在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
    }]
}

2 个答案:

答案 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