Можем ли мы передать возможности стека браузера во время выполнения? - PullRequest
0 голосов
/ 12 октября 2018

Можно ли передать возможности стека браузера во время выполнения?Приведенный ниже список возможностей был передан в конфигурационном файле.Каждый раз, когда я запускаю свой скрипт, я комментирую остальные браузеры и запускаю, используя protractor cucumber.Browserstackconfig.js.Можно ли запустить только определенное устройство или браузер, не комментируя другие возможности.Я также пробовал многократные возможности, где сценарии работают на всех упомянутых устройствах.Кто-нибудь может предложить решение для этого?

'os_version' : '5.0',
'device' : 'Samsung Galaxy S6',
'real_mobile' : 'true',
'browserstack.local' : 'false',
'resolution':'800x600',
'acceptSslCerts': true
'deviceOrientation' :'landscape'


 'os_version' : '11.2',
 'device' : 'iPhone 6',
 'real_mobile' : 'true',
 'browserstack.local' : 'false',
 'browserName': 'Chrome',
 'browser_version': '68.0',
 'acceptSslCerts': true,
 'resolution':'800x600',

 'os_version' : '9.1',
 'device' : 'iPad Mini 4',
 'browserstack.local' : 'false',
 'acceptSslCerts': true

 'os': 'Windows',
 'os_version': '10',
 'browserName': 'IE',
 'browser_version': '11.0',
 'resolution': '1024x768',
 'acceptSslCerts': true,

1 Ответ

0 голосов
/ 12 октября 2018

1) Подготовьте файл capabilities.js для хранения всех возможностей вашего браузера и экспортируйте функцию get() следующим образом:

var capabilitiesList = {
    'S6': {
        'os_version': '5.0',
        'device': 'Samsung Galaxy S6',
        'real_mobile': 'true',
        'browserstack.local': 'false',
        'resolution': '800x600',
        'acceptSslCerts': true,
        'deviceOrientation': 'landscape'
    },

    'iPhone6': {
        'os_version': '11.2',
        'device': 'iPhone 6',
        'real_mobile': 'true',
        'browserstack.local': 'false',
        'browserName': 'Chrome',
        'browser_version': '68.0',
        'acceptSslCerts': true,
        'resolution': '800x600',
    },

    'iPad4': {
        'os_version': '9.1',
        'device': 'iPad Mini 4',
        'browserstack.local': 'false',
        'acceptSslCerts': true
    },

    'ie': {
        'os': 'Windows',
        'os_version': '10',
        'browserName': 'IE',
        'browser_version': '11.0',
        'resolution': '1024x768',
        'acceptSslCerts': true,
    }
};

module.exports = function get(browsers) {

    if (!!browsers) {

        let multiCapabilities = [];

        browsers = browsers.split('=')[1].trim();

        browsers.split(',').forEach(function (browser) {
            browser = browser.trim();
            if (capabilitiesList.keys().includes(browser)) {
                multiCapabilities.push(capabilitiesList[browser]);
            }
        });

        return multiCapabilities.length === 0 ? undefined : multiCapabilities;
    }
};

2) Измените транспортир conf.js, чтобы принимать браузеры из строки cmd,затем вызовите функцию get() для возврата списка возможностей.

let capabilities = require('./capabilities.js');

let browsers = process.argv.find((it) => {
    return it.includes('--browsers=');
});

exports.config = {

    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: ['./test.js'],

    capabilities: {
        browserName: 'chrome'
    },

    multiCapabilities: capabilities.get(browsers),

    jasmineNodeOpts: {
        // If true, print colors to the terminal.
        showColors: true,
        // Default time to wait in ms before a test fails.
        defaultTimeoutInterval: 3600000,
        // Function called to print jasmine results.
        print: function() {},
    }
};

3) Укажите браузер в строке cmd

protractor conf.js --browsers=ie  // for running only one browser
protractor conf.js --browsers=ie,iPad4  // for running multiple browsers
protractor conf.js  // will run on chrome browser
...