@testim/testim-cli
Version:
Command line interface for running Testing on you CI
83 lines (69 loc) • 6.29 kB
JavaScript
/**
*
* 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
*
*/
;
var _getIterator = require('babel-runtime/core-js/get-iterator')['default'];
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 = _getIterator(value), _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]] : value.split('');
}
exports['default'] = elementIdValue;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9wcm90b2NvbC9lbGVtZW50SWRWYWx1ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FZbUMsc0JBQXNCOztpQ0FDM0IsdUJBQXVCOztBQUVyRCxJQUFJLGNBQWMsR0FBRyxTQUFqQixjQUFjLENBQWEsRUFBRSxFQUFFLEtBQUssRUFBRTtBQUN0QyxRQUFJLEdBQUcsR0FBRyxFQUFFLENBQUE7O0FBRVosUUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFO0FBQ2xELGNBQU0scUNBQWtCLCtFQUErRSxDQUFDLENBQUE7S0FDM0c7Ozs7O0FBS0QsUUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDM0IsV0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtLQUM1QixNQUFNLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTs7Ozs7O0FBQy9CLDhDQUFvQixLQUFLLDRHQUFFO29CQUFsQixPQUFPOztBQUNaLG1CQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUMxQzs7Ozs7Ozs7Ozs7Ozs7O0tBQ0osTUFBTTtBQUNILGNBQU0scUNBQWtCLCtFQUErRSxDQUFDLENBQUE7S0FDM0c7O0FBRUQsV0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sa0NBQWdDLEVBQUUsYUFBVTtBQUN6RSxlQUFPLEVBQUUsR0FBRztLQUNmLENBQUMsQ0FBQTtDQUNMLENBQUE7Ozs7Ozs7QUFPRCxTQUFTLFlBQVksQ0FBRSxLQUFLLEVBQUU7QUFDMUIsV0FBTyxxQ0FBbUIsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUNBQW1CLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtDQUNsRzs7cUJBRWMsY0FBYyIsImZpbGUiOiJlbGVtZW50SWRWYWx1ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFNlbmQgYSBzZXF1ZW5jZSBvZiBrZXkgc3Ryb2tlcyB0byBhbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBJRCAgICAgICAgICAgICAgSUQgb2YgYSBXZWJFbGVtZW50IEpTT04gb2JqZWN0IHRvIHJvdXRlIHRoZSBjb21tYW5kIHRvXG4gKiBAcGFyYW0ge1N0cmluZ3xTdHJpbmdbXX0gdmFsdWUgIFRoZSBzZXF1ZW5jZSBvZiBrZXlzIHRvIHR5cGUuIEFuIGFycmF5IG11c3QgYmUgcHJvdmlkZWQuIFRoZSBzZXJ2ZXIgc2hvdWxkIGZsYXR0ZW4gdGhlIGFycmF5IGl0ZW1zIHRvIGEgc2luZ2xlIHN0cmluZyB0byBiZSB0eXBlZC5cbiAqXG4gKiBAc2VlICBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3NlbGVuaXVtL3dpa2kvSnNvbldpcmVQcm90b2NvbCMvc2Vzc2lvbi86c2Vzc2lvbklkL2VsZW1lbnQvOmlkL3ZhbHVlXG4gKiBAdHlwZSBwcm90b2NvbFxuICpcbiAqL1xuXG5pbXBvcnQgeyBVTklDT0RFX0NIQVJBQ1RFUlMgfSBmcm9tICcuLi9oZWxwZXJzL2NvbnN0YW50cydcbmltcG9ydCB7IFByb3RvY29sRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbmxldCBlbGVtZW50SWRWYWx1ZSA9IGZ1bmN0aW9uIChpZCwgdmFsdWUpIHtcbiAgICBsZXQga2V5ID0gW11cblxuICAgIGlmICh0eXBlb2YgaWQgIT09ICdzdHJpbmcnICYmIHR5cGVvZiBpZCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFByb3RvY29sRXJyb3IoJ251bWJlciBvciB0eXBlIG9mIGFyZ3VtZW50cyBkb25cXCd0IGFncmVlIHdpdGggZWxlbWVudElkVmFsdWUgcHJvdG9jb2wgY29tbWFuZCcpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmVwbGFjZSBrZXkgd2l0aCBjb3JyZXNwb25kaW5nIHVuaWNvZGUgY2hhcmFjdGVyXG4gICAgICovXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAga2V5ID0gY2hlY2tVbmljb2RlKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBmb3IgKGxldCBjaGFyU2V0IG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBrZXkgPSBrZXkuY29uY2F0KGNoZWNrVW5pY29kZShjaGFyU2V0KSlcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBQcm90b2NvbEVycm9yKCdudW1iZXIgb3IgdHlwZSBvZiBhcmd1bWVudHMgZG9uXFwndCBhZ3JlZSB3aXRoIGVsZW1lbnRJZFZhbHVlIHByb3RvY29sIGNvbW1hbmQnKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3RIYW5kbGVyLmNyZWF0ZShgL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LyR7aWR9L3ZhbHVlYCwge1xuICAgICAgICAndmFsdWUnOiBrZXlcbiAgICB9KVxufVxuXG4vKiFcbiAqIGNoZWNrIGZvciB1bmljb2RlIGNoYXJhY3RlciBvciBzcGxpdCBzdHJpbmcgaW50byBsaXRlcmFsc1xuICogQHBhcmFtICB7U3RyaW5nfSB2YWx1ZSAgdGV4dFxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgc2V0IG9mIGNoYXJhY3RlcnMgb3IgdW5pY29kZSBzeW1ib2xzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrVW5pY29kZSAodmFsdWUpIHtcbiAgICByZXR1cm4gVU5JQ09ERV9DSEFSQUNURVJTLmhhc093blByb3BlcnR5KHZhbHVlKSA/IFtVTklDT0RFX0NIQVJBQ1RFUlNbdmFsdWVdXSA6IHZhbHVlLnNwbGl0KCcnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBlbGVtZW50SWRWYWx1ZVxuIl19