如何在启动webdriver实例之前通过命令行在conf.js中传递deviceName

时间:2016-04-22 19:24:35

标签: javascript selenium protractor selenium-chromedriver

目前我正在尝试在移动设备上模拟Chrome浏览器(例如Apple iPad \ Samsung Galaxy)。在conf.js中传递硬编码的deviceName时,它工作正常。

但我想在飞行中更换设备。我已经尝试在命令行中传递deivceName参数但没有运气。它没有更新conf.js中的值,但是在启动webdriver实例后,我看到更新的参数值:

protractor mobiledevice.js --params.device="Apple iPhone 5"

-

"use strict";

var config = require('./conf.js').config;

config.params = {
    device: 'Google Nexus 6'
}


config.capabilities = {
    'chromeOptions': {
        'mobileEmulation': {
            'deviceName': config.params.device
        }
    }
};

exports.config = config;

问题:如何模拟通过命令行作为参数传递的设备?

1 个答案:

答案 0 :(得分:1)

您可以定义getMultiCapabilities function

exports.config = {
    getMultiCapabilities: function () {
        return [{
            chromeOptions: {
                mobileEmulation: {
                    deviceName: this.params.device
                }
            }
        }];
    },

    // ...
};

然后传递device参数:

protractor mobiledevice.js --params.device="Apple iPhone 5"