/**
*
* Select option with a specific index.
*
* <example>
:example.html
<select id="selectbox">
<option value="someValue0">uno</option>
<option value="someValue1">dos</option>
<option value="someValue2">tres</option>
<option value="someValue3">cuatro</option>
<option value="someValue4">cinco</option>
<option value="someValue5">seis</option>
</select>
:selectByIndex.js
client
.getValue('#selectbox')
.then(function(value) {
console.log(value);
// returns "someValue0"
})
.selectByIndex('#selectbox', 4)
.getValue('#selectbox')
.then(function(value) {
console.log(value);
// returns "someValue4"
});
* </example>
*
* @param {String} selectElem select element that contains the options
* @param {Number} index option index
*
* @uses protocol/element, protocol/elementIdElements, protocol/elementIdClick
* @type action
*
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var _utilsErrorHandler = require('../utils/ErrorHandler');
var selectByIndex = function selectByIndex(selectElem, index) {
// istanbul ignore next
var _this = this;
/*!
* parameter check
*/
if (typeof selectElem !== 'string' || typeof index !== 'number') {
throw new _utilsErrorHandler.CommandError('number or type of arguments don\'t agree with selectByIndex command');
}
/*!
* negative index check
*/
if (index < 0) {
throw new _utilsErrorHandler.CommandError('index needs to be 0 or any other positive number');
}
return this.element(selectElem).then(function (element) {
return _this.elementIdElements(element.value.ELEMENT, '<option>');
}).then(function (elements) {
if (elements.value.length === 0) {
throw new _utilsErrorHandler.CommandError('select element (' + selectElem + ') doesn\'t contain any option element');
}
if (elements.value.length - 1 < index) {
throw new _utilsErrorHandler.CommandError('option with index "' + index + '" not found. Select element (' + selectElem + ') only contains ' + elements.value.length + ' option elements');
}
return _this.elementIdClick(elements.value[index].ELEMENT);
});
};
exports['default'] = selectByIndex;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2VsZWN0QnlJbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0FzQzZCLHVCQUF1Qjs7QUFFcEQsSUFBSSxhQUFhLEdBQUcsU0FBaEIsYUFBYSxDQUFhLFVBQVUsRUFBRSxLQUFLLEVBQUU7Ozs7Ozs7O0FBSTdDLFFBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3RCxjQUFNLG9DQUFpQixxRUFBcUUsQ0FBQyxDQUFBO0tBQ2hHOzs7OztBQUtELFFBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtBQUNYLGNBQU0sb0NBQWlCLGtEQUFrRCxDQUFDLENBQUE7S0FDN0U7O0FBRUQsV0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUMxQixJQUFJLENBQUMsVUFBQyxPQUFPO2VBQUssTUFBSyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7S0FBQSxDQUFDLENBQzVFLElBQUksQ0FBQyxVQUFDLFFBQVEsRUFBSztBQUNoQixZQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUM3QixrQkFBTSx5REFBb0MsVUFBVSwyQ0FBdUMsQ0FBQTtTQUM5RjtBQUNELFlBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRTtBQUNuQyxrQkFBTSw0REFBdUMsS0FBSyxxQ0FBZ0MsVUFBVSx3QkFBbUIsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLHNCQUFtQixDQUFBO1NBQzFKOztBQUVELGVBQU8sTUFBSyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtLQUM1RCxDQUFDLENBQUE7Q0FDVCxDQUFBOztxQkFFYyxhQUFhIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2VsZWN0QnlJbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFNlbGVjdCBvcHRpb24gd2l0aCBhIHNwZWNpZmljIGluZGV4LlxuICpcbiAqIDxleGFtcGxlPlxuICAgIDpleGFtcGxlLmh0bWxcbiAgICA8c2VsZWN0IGlkPVwic2VsZWN0Ym94XCI+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb21lVmFsdWUwXCI+dW5vPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb21lVmFsdWUxXCI+ZG9zPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb21lVmFsdWUyXCI+dHJlczwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29tZVZhbHVlM1wiPmN1YXRybzwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29tZVZhbHVlNFwiPmNpbmNvPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb21lVmFsdWU1XCI+c2Vpczwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuXG4gICAgOnNlbGVjdEJ5SW5kZXguanNcbiAgICBjbGllbnRcbiAgICAgICAgLmdldFZhbHVlKCcjc2VsZWN0Ym94JylcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgICAgICAgIC8vIHJldHVybnMgXCJzb21lVmFsdWUwXCJcbiAgICAgICAgfSlcbiAgICAgICAgLnNlbGVjdEJ5SW5kZXgoJyNzZWxlY3Rib3gnLCA0KVxuICAgICAgICAuZ2V0VmFsdWUoJyNzZWxlY3Rib3gnKVxuICAgICAgICAudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAgICAgICAgLy8gcmV0dXJucyBcInNvbWVWYWx1ZTRcIlxuICAgICAgICB9KTtcbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VsZWN0RWxlbSBzZWxlY3QgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBvcHRpb25zXG4gKiBAcGFyYW0ge051bWJlcn0gaW5kZXggICAgICBvcHRpb24gaW5kZXhcbiAqXG4gKiBAdXNlcyBwcm90b2NvbC9lbGVtZW50LCBwcm90b2NvbC9lbGVtZW50SWRFbGVtZW50cywgcHJvdG9jb2wvZWxlbWVudElkQ2xpY2tcbiAqIEB0eXBlIGFjdGlvblxuICpcbiAqL1xuXG5pbXBvcnQgeyBDb21tYW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbmxldCBzZWxlY3RCeUluZGV4ID0gZnVuY3Rpb24gKHNlbGVjdEVsZW0sIGluZGV4KSB7XG4gICAgLyohXG4gICAgICogcGFyYW1ldGVyIGNoZWNrXG4gICAgICovXG4gICAgaWYgKHR5cGVvZiBzZWxlY3RFbGVtICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgaW5kZXggIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoJ251bWJlciBvciB0eXBlIG9mIGFyZ3VtZW50cyBkb25cXCd0IGFncmVlIHdpdGggc2VsZWN0QnlJbmRleCBjb21tYW5kJylcbiAgICB9XG5cbiAgICAvKiFcbiAgICAgKiBuZWdhdGl2ZSBpbmRleCBjaGVja1xuICAgICAqL1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1hbmRFcnJvcignaW5kZXggbmVlZHMgdG8gYmUgMCBvciBhbnkgb3RoZXIgcG9zaXRpdmUgbnVtYmVyJylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lbGVtZW50KHNlbGVjdEVsZW0pXG4gICAgICAgIC50aGVuKChlbGVtZW50KSA9PiB0aGlzLmVsZW1lbnRJZEVsZW1lbnRzKGVsZW1lbnQudmFsdWUuRUxFTUVOVCwgJzxvcHRpb24+JykpXG4gICAgICAgIC50aGVuKChlbGVtZW50cykgPT4ge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoYHNlbGVjdCBlbGVtZW50ICgke3NlbGVjdEVsZW19KSBkb2Vzbid0IGNvbnRhaW4gYW55IG9wdGlvbiBlbGVtZW50YClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50cy52YWx1ZS5sZW5ndGggLSAxIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKGBvcHRpb24gd2l0aCBpbmRleCBcIiR7aW5kZXh9XCIgbm90IGZvdW5kLiBTZWxlY3QgZWxlbWVudCAoJHtzZWxlY3RFbGVtfSkgb25seSBjb250YWlucyAke2VsZW1lbnRzLnZhbHVlLmxlbmd0aH0gb3B0aW9uIGVsZW1lbnRzYClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudElkQ2xpY2soZWxlbWVudHMudmFsdWVbaW5kZXhdLkVMRU1FTlQpXG4gICAgICAgIH0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IHNlbGVjdEJ5SW5kZXhcbiJdfQ== |