all files / DEV/lib/commands/ setValue.js

93.1% Statements 27/29
62.5% Branches 10/16
0% Functions 0/2
50% Lines 2/4
22 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 81 82 83 84 85 86 87 88 89 90 91 92                                                                                                                                                                                     
/**
 *
 * Send a sequence of key strokes to an element (clears value before). You can also use
 * unicode characters like Left arrow or Back space. WebdriverIO will take care of
 * translating them into unicode characters. You’ll find all supported characters
 * [here](https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element/:id/value).
 * To do that, the value has to correspond to a key from the table.
 *
 * <example>
    :setValue.js
    client
        .setValue('.input', 'test123')
        .getValue('.input').then(function(value) {
            assert(value === 'test123'); // true
        });
 * </example>
 *
 * @param {String}         selector   Input element
 * @param {String|Number=} values     Input element
 *
 * @uses protocol/elements, protocol/elementIdClear, protocol/elementIdValue
 * @type action
 *
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
 
var _utilsErrorHandler = require('../utils/ErrorHandler');

var setValue = function setValue(selector, value) {
    // istanbul ignore next
 
    var _this = this;
 
    /*!
     * parameter check
     */
    if (typeof value === 'number') {
        value = value.toString();
    }
 
    if (typeof value !== 'string' && !Array.isArray(value)) {
        throw new _utilsErrorHandler.CommandError('number or type of arguments don\'t agree with setValue command');
    }
 
    return this.elements(selector).then(function (res) {
        /**
         * throw NoSuchElement error if no element was found
         */
        if (!res.value || res.value.length === 0) {
            throw new _utilsErrorHandler.CommandError(7);
        }
 
        var elementIdValueCommands = [];
        var _iteratorNormalCompletion = true;
        var _didIteratorError = false;
        var _iteratorError = undefined;
 
        try {
            for (var _iterator = res.value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
                var elem = _step.value;
 
                elementIdValueCommands.push(_this.elementIdClear(elem.ELEMENT).elementIdValue(elem.ELEMENT, value));
            }
        } catch (err) {
            _didIteratorError = true;
            _iteratorError = err;
        } finally {
            try {
                if (!_iteratorNormalCompletion && _iterator['return']) {
                    _iterator['return']();
                }
            } finally {
                if (_didIteratorError) {
                    throw _iteratorError;
                }
            }
        }
 
        return _this.unify(elementIdValueCommands, {
            extractValue: true
        });
    });
};
 
exports['default'] = setValue;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2V0VmFsdWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0F5QjZCLHVCQUF1Qjs7QUFFcEQsSUFBSSxRQUFRLEdBQUcsU0FBWCxRQUFRLENBQWEsUUFBUSxFQUFFLEtBQUssRUFBRTs7Ozs7Ozs7QUFJdEMsUUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDM0IsYUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtLQUMzQjs7QUFFRCxRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDcEQsY0FBTSxvQ0FBaUIsZ0VBQWdFLENBQUMsQ0FBQTtLQUMzRjs7QUFFRCxXQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxFQUFLOzs7O0FBSXpDLFlBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUN0QyxrQkFBTSxvQ0FBaUIsQ0FBQyxDQUFDLENBQUE7U0FDNUI7O0FBRUQsWUFBSSxzQkFBc0IsR0FBRyxFQUFFLENBQUE7Ozs7OztBQUMvQixpQ0FBaUIsR0FBRyxDQUFDLEtBQUssOEhBQUU7b0JBQW5CLElBQUk7O0FBQ1Qsc0NBQXNCLENBQUMsSUFBSSxDQUFDLE1BQUssY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO2FBQ3JHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUQsZUFBTyxNQUFLLEtBQUssQ0FBQyxzQkFBc0IsRUFBRTtBQUN0Qyx3QkFBWSxFQUFFLElBQUk7U0FDckIsQ0FBQyxDQUFBO0tBQ0wsQ0FBQyxDQUFBO0NBQ0wsQ0FBQTs7cUJBRWMsUUFBUSIsImZpbGUiOiIvVXNlcnMvY2hyaXN0aWFuYnJvbWFubi9TaXRlcy9XZWJwcm9qZWt0ZS93ZWJkcml2ZXJqcy9ERVYvbGliL2NvbW1hbmRzL3NldFZhbHVlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogU2VuZCBhIHNlcXVlbmNlIG9mIGtleSBzdHJva2VzIHRvIGFuIGVsZW1lbnQgKGNsZWFycyB2YWx1ZSBiZWZvcmUpLiBZb3UgY2FuIGFsc28gdXNlXG4gKiB1bmljb2RlIGNoYXJhY3RlcnMgbGlrZSBMZWZ0IGFycm93IG9yIEJhY2sgc3BhY2UuIFdlYmRyaXZlcklPIHdpbGwgdGFrZSBjYXJlIG9mXG4gKiB0cmFuc2xhdGluZyB0aGVtIGludG8gdW5pY29kZSBjaGFyYWN0ZXJzLiBZb3XigJlsbCBmaW5kIGFsbCBzdXBwb3J0ZWQgY2hhcmFjdGVyc1xuICogW2hlcmVdKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avc2VsZW5pdW0vd2lraS9Kc29uV2lyZVByb3RvY29sIy9zZXNzaW9uLzpzZXNzaW9uSWQvZWxlbWVudC86aWQvdmFsdWUpLlxuICogVG8gZG8gdGhhdCwgdGhlIHZhbHVlIGhhcyB0byBjb3JyZXNwb25kIHRvIGEga2V5IGZyb20gdGhlIHRhYmxlLlxuICpcbiAqIDxleGFtcGxlPlxuICAgIDpzZXRWYWx1ZS5qc1xuICAgIGNsaWVudFxuICAgICAgICAuc2V0VmFsdWUoJy5pbnB1dCcsICd0ZXN0MTIzJylcbiAgICAgICAgLmdldFZhbHVlKCcuaW5wdXQnKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBhc3NlcnQodmFsdWUgPT09ICd0ZXN0MTIzJyk7IC8vIHRydWVcbiAgICAgICAgfSk7XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9ICAgICAgICAgc2VsZWN0b3IgICBJbnB1dCBlbGVtZW50XG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXI9fSB2YWx1ZXMgICAgIElucHV0IGVsZW1lbnRcbiAqXG4gKiBAdXNlcyBwcm90b2NvbC9lbGVtZW50cywgcHJvdG9jb2wvZWxlbWVudElkQ2xlYXIsIHByb3RvY29sL2VsZW1lbnRJZFZhbHVlXG4gKiBAdHlwZSBhY3Rpb25cbiAqXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgc2V0VmFsdWUgPSBmdW5jdGlvbiAoc2VsZWN0b3IsIHZhbHVlKSB7XG4gICAgLyohXG4gICAgICogcGFyYW1ldGVyIGNoZWNrXG4gICAgICovXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoJ251bWJlciBvciB0eXBlIG9mIGFyZ3VtZW50cyBkb25cXCd0IGFncmVlIHdpdGggc2V0VmFsdWUgY29tbWFuZCcpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudHMoc2VsZWN0b3IpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhyb3cgTm9TdWNoRWxlbWVudCBlcnJvciBpZiBubyBlbGVtZW50IHdhcyBmb3VuZFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKCFyZXMudmFsdWUgfHwgcmVzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1hbmRFcnJvcig3KVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVsZW1lbnRJZFZhbHVlQ29tbWFuZHMgPSBbXVxuICAgICAgICBmb3IgKGxldCBlbGVtIG9mIHJlcy52YWx1ZSkge1xuICAgICAgICAgICAgZWxlbWVudElkVmFsdWVDb21tYW5kcy5wdXNoKHRoaXMuZWxlbWVudElkQ2xlYXIoZWxlbS5FTEVNRU5UKS5lbGVtZW50SWRWYWx1ZShlbGVtLkVMRU1FTlQsIHZhbHVlKSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5KGVsZW1lbnRJZFZhbHVlQ29tbWFuZHMsIHtcbiAgICAgICAgICAgIGV4dHJhY3RWYWx1ZTogdHJ1ZVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IHNldFZhbHVlXG4iXX0=