@testim/testim-cli
Version:
Command line interface for running Testing on you CI
79 lines (68 loc) • 6.72 kB
JavaScript
/**
*
* Send a sequence of key strokes to the active element. This command is similar to the
* send keys command in every aspect except the implicit termination: The modifiers are
* *not* released at the end of the call. Rather, the state of the modifier keys is kept
* between calls, so mouse interactions can be performed while modifier keys are depressed.
*
* 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.
*
* @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/keys
* @type protocol
*
*/
;
var _getIterator = require('babel-runtime/core-js/get-iterator')['default'];
var _helpersConstants = require('../helpers/constants');
var _utilsErrorHandler = require('../utils/ErrorHandler');
module.exports = function keys(value) {
var key = [];
/**
* 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 keys protocol command');
}
return this.requestHandler.create('/session/:sessionId/keys', {
'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('');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9wcm90b2NvbC9rZXlzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQW1CbUMsc0JBQXNCOztpQ0FDM0IsdUJBQXVCOztBQUVyRCxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsSUFBSSxDQUFFLEtBQUssRUFBRTtBQUNuQyxRQUFJLEdBQUcsR0FBRyxFQUFFLENBQUE7Ozs7O0FBS1osUUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDM0IsV0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtLQUM1QixNQUFNLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTs7Ozs7O0FBQy9CLDhDQUFvQixLQUFLLDRHQUFFO29CQUFsQixPQUFPOztBQUNaLG1CQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUMxQzs7Ozs7Ozs7Ozs7Ozs7O0tBQ0osTUFBTTtBQUNILGNBQU0scUNBQWtCLHFFQUFxRSxDQUFDLENBQUE7S0FDakc7O0FBRUQsV0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRTtBQUMxRCxlQUFPLEVBQUUsR0FBRztLQUNmLENBQUMsQ0FBQTtDQUNMLENBQUE7Ozs7Ozs7QUFPRCxTQUFTLFlBQVksQ0FBRSxLQUFLLEVBQUU7QUFDMUIsV0FBTyxxQ0FBbUIsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUNBQW1CLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtDQUNsRyIsImZpbGUiOiJrZXlzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogU2VuZCBhIHNlcXVlbmNlIG9mIGtleSBzdHJva2VzIHRvIHRoZSBhY3RpdmUgZWxlbWVudC4gVGhpcyBjb21tYW5kIGlzIHNpbWlsYXIgdG8gdGhlXG4gKiBzZW5kIGtleXMgY29tbWFuZCBpbiBldmVyeSBhc3BlY3QgZXhjZXB0IHRoZSBpbXBsaWNpdCB0ZXJtaW5hdGlvbjogVGhlIG1vZGlmaWVycyBhcmVcbiAqICpub3QqIHJlbGVhc2VkIGF0IHRoZSBlbmQgb2YgdGhlIGNhbGwuIFJhdGhlciwgdGhlIHN0YXRlIG9mIHRoZSBtb2RpZmllciBrZXlzIGlzIGtlcHRcbiAqIGJldHdlZW4gY2FsbHMsIHNvIG1vdXNlIGludGVyYWN0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIHdoaWxlIG1vZGlmaWVyIGtleXMgYXJlIGRlcHJlc3NlZC5cbiAqXG4gKiBZb3UgY2FuIGFsc28gdXNlIHVuaWNvZGUgY2hhcmFjdGVycyBsaWtlIExlZnQgYXJyb3cgb3IgQmFjayBzcGFjZS4gV2ViZHJpdmVySU8gd2lsbCB0YWtlXG4gKiBjYXJlIG9mIHRyYW5zbGF0aW5nIHRoZW0gaW50byB1bmljb2RlIGNoYXJhY3RlcnMuIFlvdeKAmWxsIGZpbmQgYWxsIHN1cHBvcnRlZCBjaGFyYWN0ZXJzXG4gKiBbaGVyZV0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zZWxlbml1bS93aWtpL0pzb25XaXJlUHJvdG9jb2wjL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LzppZC92YWx1ZSkuXG4gKiBUbyBkbyB0aGF0LCB0aGUgdmFsdWUgaGFzIHRvIGNvcnJlc3BvbmQgdG8gYSBrZXkgZnJvbSB0aGUgdGFibGUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IHZhbHVlICBUaGUgc2VxdWVuY2Ugb2Yga2V5cyB0byB0eXBlLiBBbiBhcnJheSBtdXN0IGJlIHByb3ZpZGVkLiBUaGUgc2VydmVyIHNob3VsZCBmbGF0dGVuIHRoZSBhcnJheSBpdGVtcyB0byBhIHNpbmdsZSBzdHJpbmcgdG8gYmUgdHlwZWQuXG4gKlxuICogQHNlZSAgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zZWxlbml1bS93aWtpL0pzb25XaXJlUHJvdG9jb2wjL3Nlc3Npb24vOnNlc3Npb25JZC9rZXlzXG4gKiBAdHlwZSBwcm90b2NvbFxuICpcbiAqL1xuXG5pbXBvcnQgeyBVTklDT0RFX0NIQVJBQ1RFUlMgfSBmcm9tICcuLi9oZWxwZXJzL2NvbnN0YW50cydcbmltcG9ydCB7IFByb3RvY29sRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ga2V5cyAodmFsdWUpIHtcbiAgICBsZXQga2V5ID0gW11cblxuICAgIC8qKlxuICAgICAqIHJlcGxhY2Uga2V5IHdpdGggY29ycmVzcG9uZGluZyB1bmljb2RlIGNoYXJhY3RlclxuICAgICAqL1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGtleSA9IGNoZWNrVW5pY29kZSh2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZm9yIChsZXQgY2hhclNldCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAga2V5ID0ga2V5LmNvbmNhdChjaGVja1VuaWNvZGUoY2hhclNldCkpXG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUHJvdG9jb2xFcnJvcignbnVtYmVyIG9yIHR5cGUgb2YgYXJndW1lbnRzIGRvblxcJ3QgYWdyZWUgd2l0aCBrZXlzIHByb3RvY29sIGNvbW1hbmQnKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3RIYW5kbGVyLmNyZWF0ZSgnL3Nlc3Npb24vOnNlc3Npb25JZC9rZXlzJywge1xuICAgICAgICAndmFsdWUnOiBrZXlcbiAgICB9KVxufVxuXG4vKiFcbiAqIGNoZWNrIGZvciB1bmljb2RlIGNoYXJhY3RlciBvciBzcGxpdCBzdHJpbmcgaW50byBsaXRlcmFsc1xuICogQHBhcmFtICB7U3RyaW5nfSB2YWx1ZSAgdGV4dFxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgc2V0IG9mIGNoYXJhY3RlcnMgb3IgdW5pY29kZSBzeW1ib2xzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrVW5pY29kZSAodmFsdWUpIHtcbiAgICByZXR1cm4gVU5JQ09ERV9DSEFSQUNURVJTLmhhc093blByb3BlcnR5KHZhbHVlKSA/IFtVTklDT0RFX0NIQVJBQ1RFUlNbdmFsdWVdXSA6IHZhbHVlLnNwbGl0KCcnKVxufVxuIl19