all files / DEV/lib/protocol/ elementIdValue.js

93.33% Statements 28/30
62.5% Branches 10/16
0% Functions 0/2
50% Lines 2/4
21 statements, 10 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80                                                                                                                                                             
/**
 *
 * Send a sequence of key strokes to an element.
 *
 * @param {String} ID              ID of a WebElement JSON object to route the command to
 * @param {String|String[]} value  The sequence of keys to type. An array must be provided. The server should flatten the array items to a single string to be typed.
 *
 * @see  https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element/:id/value
 * @type protocol
 *
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
 
var _helpersConstants = require('../helpers/constants');
 
var _utilsErrorHandler = require('../utils/ErrorHandler');
 
var elementIdValue = function elementIdValue(id, value) {
    var key = [];
 
    if (typeof id !== 'string' && typeof id !== 'number') {
        throw new _utilsErrorHandler.ProtocolError('number or type of arguments don\'t agree with elementIdValue protocol command');
    }
 
    /**
     * replace key with corresponding unicode character
     */
    if (typeof value === 'string') {
        key = checkUnicode(value);
    } else if (value instanceof Array) {
        var _iteratorNormalCompletion = true;
        var _didIteratorError = false;
        var _iteratorError = undefined;
 
        try {
            for (var _iterator = value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
                var charSet = _step.value;
 
                key = key.concat(checkUnicode(charSet));
            }
        } catch (err) {
            _didIteratorError = true;
            _iteratorError = err;
        } finally {
            try {
                if (!_iteratorNormalCompletion && _iterator['return']) {
                    _iterator['return']();
                }
            } finally {
                if (_didIteratorError) {
                    throw _iteratorError;
                }
            }
        }
    } else {
        throw new _utilsErrorHandler.ProtocolError('number or type of arguments don\'t agree with elementIdValue protocol command');
    }
 
    return this.requestHandler.create('/session/:sessionId/element/' + id + '/value', {
        'value': key
    });
};
 
/*!
 * check for unicode character or split string into literals
 * @param  {String} value  text
 * @return {Array}         set of characters or unicode symbols
 */
function checkUnicode(value) {
    return _helpersConstants.UNICODE_CHARACTERS.hasOwnProperty(value) ? [_helpersConstants.UNICODE_CHARACTERS[value]] : Array.from(value);
}
 
exports['default'] = elementIdValue;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wvZWxlbWVudElkVmFsdWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQVltQyxzQkFBc0I7O2lDQUMzQix1QkFBdUI7O0FBRXJELElBQUksY0FBYyxHQUFHLFNBQWpCLGNBQWMsQ0FBYSxFQUFFLEVBQUUsS0FBSyxFQUFFO0FBQ3RDLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTs7QUFFWixRQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7QUFDbEQsY0FBTSxxQ0FBa0IsK0VBQStFLENBQUMsQ0FBQTtLQUMzRzs7Ozs7QUFLRCxRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUMzQixXQUFHLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQzVCLE1BQU0sSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFOzs7Ozs7QUFDL0IsaUNBQW9CLEtBQUssOEhBQUU7b0JBQWxCLE9BQU87O0FBQ1osbUJBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2FBQzFDOzs7Ozs7Ozs7Ozs7Ozs7S0FDSixNQUFNO0FBQ0gsY0FBTSxxQ0FBa0IsK0VBQStFLENBQUMsQ0FBQTtLQUMzRzs7QUFFRCxXQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxrQ0FBZ0MsRUFBRSxhQUFVO0FBQ3pFLGVBQU8sRUFBRSxHQUFHO0tBQ2YsQ0FBQyxDQUFBO0NBQ0wsQ0FBQTs7Ozs7OztBQU9ELFNBQVMsWUFBWSxDQUFFLEtBQUssRUFBRTtBQUMxQixXQUFPLHFDQUFtQixjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxxQ0FBbUIsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0NBQ3BHOztxQkFFYyxjQUFjIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wvZWxlbWVudElkVmFsdWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBTZW5kIGEgc2VxdWVuY2Ugb2Yga2V5IHN0cm9rZXMgdG8gYW4gZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gSUQgICAgICAgICAgICAgIElEIG9mIGEgV2ViRWxlbWVudCBKU09OIG9iamVjdCB0byByb3V0ZSB0aGUgY29tbWFuZCB0b1xuICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IHZhbHVlICBUaGUgc2VxdWVuY2Ugb2Yga2V5cyB0byB0eXBlLiBBbiBhcnJheSBtdXN0IGJlIHByb3ZpZGVkLiBUaGUgc2VydmVyIHNob3VsZCBmbGF0dGVuIHRoZSBhcnJheSBpdGVtcyB0byBhIHNpbmdsZSBzdHJpbmcgdG8gYmUgdHlwZWQuXG4gKlxuICogQHNlZSAgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zZWxlbml1bS93aWtpL0pzb25XaXJlUHJvdG9jb2wjL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LzppZC92YWx1ZVxuICogQHR5cGUgcHJvdG9jb2xcbiAqXG4gKi9cblxuaW1wb3J0IHsgVU5JQ09ERV9DSEFSQUNURVJTIH0gZnJvbSAnLi4vaGVscGVycy9jb25zdGFudHMnXG5pbXBvcnQgeyBQcm90b2NvbEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgZWxlbWVudElkVmFsdWUgPSBmdW5jdGlvbiAoaWQsIHZhbHVlKSB7XG4gICAgbGV0IGtleSA9IFtdXG5cbiAgICBpZiAodHlwZW9mIGlkICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgaWQgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBQcm90b2NvbEVycm9yKCdudW1iZXIgb3IgdHlwZSBvZiBhcmd1bWVudHMgZG9uXFwndCBhZ3JlZSB3aXRoIGVsZW1lbnRJZFZhbHVlIHByb3RvY29sIGNvbW1hbmQnKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlcGxhY2Uga2V5IHdpdGggY29ycmVzcG9uZGluZyB1bmljb2RlIGNoYXJhY3RlclxuICAgICAqL1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGtleSA9IGNoZWNrVW5pY29kZSh2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZm9yIChsZXQgY2hhclNldCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAga2V5ID0ga2V5LmNvbmNhdChjaGVja1VuaWNvZGUoY2hhclNldCkpXG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUHJvdG9jb2xFcnJvcignbnVtYmVyIG9yIHR5cGUgb2YgYXJndW1lbnRzIGRvblxcJ3QgYWdyZWUgd2l0aCBlbGVtZW50SWRWYWx1ZSBwcm90b2NvbCBjb21tYW5kJylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGFuZGxlci5jcmVhdGUoYC9zZXNzaW9uLzpzZXNzaW9uSWQvZWxlbWVudC8ke2lkfS92YWx1ZWAsIHtcbiAgICAgICAgJ3ZhbHVlJzoga2V5XG4gICAgfSlcbn1cblxuLyohXG4gKiBjaGVjayBmb3IgdW5pY29kZSBjaGFyYWN0ZXIgb3Igc3BsaXQgc3RyaW5nIGludG8gbGl0ZXJhbHNcbiAqIEBwYXJhbSAge1N0cmluZ30gdmFsdWUgIHRleHRcbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgIHNldCBvZiBjaGFyYWN0ZXJzIG9yIHVuaWNvZGUgc3ltYm9sc1xuICovXG5mdW5jdGlvbiBjaGVja1VuaWNvZGUgKHZhbHVlKSB7XG4gICAgcmV0dXJuIFVOSUNPREVfQ0hBUkFDVEVSUy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkgPyBbVU5JQ09ERV9DSEFSQUNURVJTW3ZhbHVlXV0gOiBBcnJheS5mcm9tKHZhbHVlKVxufVxuXG5leHBvcnQgZGVmYXVsdCBlbGVtZW50SWRWYWx1ZVxuIl19