如何从量角器配置中的Multicapabilities定义中获取deviceName值

问题描述 投票:1回答:4

这对你们来说可能是一个重复的问题,但实际上我还没有得到答案。这是我在量角器配置文件中的多功能定义。我想访问deviceName参数值。我该怎么做?

exports.config = {
directConnect:true,
multiCapabilities: [
{
browserName: 'chrome',
        'chromeOptions': {
            'mobileEmulation': {
                'deviceName': 'iPad'
            }
        }
    }
],

在onPrepare下尝试但没有提供多功能值

browser.getCapabilities().then(function(c) {
        console.log(c.get('deviceName'));
    });
jasmine protractor
4个回答
1
投票

不确定用getCapabilities()解决,但你应该能够用getProcessedConfig()来解决这个问题。

getProcessedConfig将返回您的整个配置设置的承诺(以及一些量角器默认值)。以你的榜样为例:

browser.getProcessedConfig().then((c) => {
    console.log(c.capabilities.chromeOptions.mobileEmulation.deviceName);
});

1
投票

你可以在console.log(process.env)区块制作onPrepare并找到你想要的东西。


1
投票

试试getProcessedConfig() http://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.getProcessedConfig

或者只是简单的老傻:

let device_name = 'iPad' 
exports.config = {
   directConnect: true,
   multiCapabilities: [{
   browserName: 'chrome',
   chromeOptions: {
      mobileEmulation: {
           deviceName: device_name
        }
      }
   }],
   onPrepare: function () {
       console.log('Device name will be', device_name);
   }

0
投票

提取设备名称按照Gunderson的建议工作,但现在我遇到了不同的问题我在onPrepare时无法访问代码块之外的变量值。

onPrepare: function () {
    browser.getProcessedConfig().then(function (c) {
        return global.deviceName 
c.capabilities.chromeOptions.mobileEmulation.deviceName;
    }).then(function () {
            console.log("Device Name is:" + global.deviceName);
            customDevice = global.deviceName;
        }
    );
};

customDevice不打印任何值.....在配置文件的顶部定义为全局变量。

我知道可能在访问它时犯了愚蠢的错误...... :)

© www.soinside.com 2019 - 2024. All rights reserved.