/**
*
* Select option that display text matching the argument.
*
* <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>
:selectByVisibleText.js
client
.getText('#selectbox option:checked').then(function(value) {
console.log(value);
// returns "uno"
})
.selectByVisibleText('#selectbox', 'cuatro')
.getText('#selectbox option:checked').then(function(value) {
console.log(value);
// returns "cuatro"
});
* </example>
*
* @param {String} selectElem select element that contains the options
* @param {String} text text of option element to get selected
*
* @uses protocol/element, protocol/elementIdClick, protocol/elementIdElement
* @type action
*
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var _utilsErrorHandler = require('../utils/ErrorHandler');
var selectByVisibleText = function selectByVisibleText(selectElem, text) {
// istanbul ignore next
var _this = this;
/*!
* parameter check
*/
if (typeof selectElem !== 'string' || typeof text !== 'string') {
throw new _utilsErrorHandler.CommandError('number or type of arguments don\'t agree with selectByVisibleText command');
}
/**
* get select element
*/
return this.element(selectElem).then(function (res) {
/**
* find option elem using xpath
*/
var formatted = '"' + text.trim() + '"';
if (/"/.test(text)) {
formatted = 'concat("' + text.trim().split('"').join('", \'"\', "') + '")'; // escape quotes
}
var normalized = '[normalize-space(.) = ' + formatted + ']';
return _this.elementIdElement(res.value.ELEMENT, './option' + normalized + '|./optgroup/option' + normalized);
}).then(function (res) {
/**
* select option
*/
return _this.elementIdClick(res.value.ELEMENT);
});
};
exports['default'] = selectByVisibleText;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2VsZWN0QnlWaXNpYmxlVGV4dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUNBb0M2Qix1QkFBdUI7O0FBRXBELElBQUksbUJBQW1CLEdBQUcsU0FBdEIsbUJBQW1CLENBQWEsVUFBVSxFQUFFLElBQUksRUFBRTs7Ozs7Ozs7QUFJbEQsUUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO0FBQzVELGNBQU0sZ0hBQTRGLENBQUE7S0FDckc7Ozs7O0FBS0QsV0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLEdBQUcsRUFBSzs7OztBQUkxQyxZQUFJLFNBQVMsU0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQUcsQ0FBQTs7QUFFbEMsWUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2hCLHFCQUFTLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQTtTQUM3RTs7QUFFRCxZQUFJLFVBQVUsOEJBQTRCLFNBQVMsTUFBRyxDQUFBO0FBQ3RELGVBQU8sTUFBSyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sZUFBYSxVQUFVLDBCQUFxQixVQUFVLENBQUcsQ0FBQTtLQUMxRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxFQUFLOzs7O0FBSWIsZUFBTyxNQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQ2hELENBQUMsQ0FBQTtDQUNMLENBQUE7O3FCQUVjLG1CQUFtQiIsImZpbGUiOiIvVXNlcnMvY2hyaXN0aWFuYnJvbWFubi9TaXRlcy9XZWJwcm9qZWt0ZS93ZWJkcml2ZXJqcy9ERVYvbGliL2NvbW1hbmRzL3NlbGVjdEJ5VmlzaWJsZVRleHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBTZWxlY3Qgb3B0aW9uIHRoYXQgZGlzcGxheSB0ZXh0IG1hdGNoaW5nIHRoZSBhcmd1bWVudC5cbiAqXG4gKiA8ZXhhbXBsZT5cbiAgICA6ZXhhbXBsZS5odG1sXG4gICAgPHNlbGVjdCBpZD1cInNlbGVjdGJveFwiPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29tZVZhbHVlMFwiPnVubzwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29tZVZhbHVlMVwiPmRvczwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29tZVZhbHVlMlwiPnRyZXM8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNvbWVWYWx1ZTNcIj5jdWF0cm88L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNvbWVWYWx1ZTRcIj5jaW5jbzwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29tZVZhbHVlNVwiPnNlaXM8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cblxuICAgIDpzZWxlY3RCeVZpc2libGVUZXh0LmpzXG4gICAgY2xpZW50XG4gICAgICAgIC5nZXRUZXh0KCcjc2VsZWN0Ym94IG9wdGlvbjpjaGVja2VkJykudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAgICAgICAgLy8gcmV0dXJucyBcInVub1wiXG4gICAgICAgIH0pXG4gICAgICAgIC5zZWxlY3RCeVZpc2libGVUZXh0KCcjc2VsZWN0Ym94JywgJ2N1YXRybycpXG4gICAgICAgIC5nZXRUZXh0KCcjc2VsZWN0Ym94IG9wdGlvbjpjaGVja2VkJykudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAgICAgICAgLy8gcmV0dXJucyBcImN1YXRyb1wiXG4gICAgICAgIH0pO1xuICogPC9leGFtcGxlPlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RFbGVtIHNlbGVjdCBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIG9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0ZXh0ICAgICAgIHRleHQgb2Ygb3B0aW9uIGVsZW1lbnQgdG8gZ2V0IHNlbGVjdGVkXG4gKlxuICogQHVzZXMgcHJvdG9jb2wvZWxlbWVudCwgcHJvdG9jb2wvZWxlbWVudElkQ2xpY2ssIHByb3RvY29sL2VsZW1lbnRJZEVsZW1lbnRcbiAqIEB0eXBlIGFjdGlvblxuICpcbiAqL1xuXG5pbXBvcnQgeyBDb21tYW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbmxldCBzZWxlY3RCeVZpc2libGVUZXh0ID0gZnVuY3Rpb24gKHNlbGVjdEVsZW0sIHRleHQpIHtcbiAgICAvKiFcbiAgICAgKiBwYXJhbWV0ZXIgY2hlY2tcbiAgICAgKi9cbiAgICBpZiAodHlwZW9mIHNlbGVjdEVsZW0gIT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKGBudW1iZXIgb3IgdHlwZSBvZiBhcmd1bWVudHMgZG9uJ3QgYWdyZWUgd2l0aCBzZWxlY3RCeVZpc2libGVUZXh0IGNvbW1hbmRgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCBzZWxlY3QgZWxlbWVudFxuICAgICAqL1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQoc2VsZWN0RWxlbSkudGhlbigocmVzKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBmaW5kIG9wdGlvbiBlbGVtIHVzaW5nIHhwYXRoXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgZm9ybWF0dGVkID0gYFwiJHt0ZXh0LnRyaW0oKX1cImBcblxuICAgICAgICBpZiAoL1wiLy50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWQgPSAnY29uY2F0KFwiJyArIHRleHQudHJpbSgpLnNwbGl0KCdcIicpLmpvaW4oJ1wiLCBcXCdcIlxcJywgXCInKSArICdcIiknIC8vIGVzY2FwZSBxdW90ZXNcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBub3JtYWxpemVkID0gYFtub3JtYWxpemUtc3BhY2UoLikgPSAke2Zvcm1hdHRlZH1dYFxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50SWRFbGVtZW50KHJlcy52YWx1ZS5FTEVNRU5ULCBgLi9vcHRpb24ke25vcm1hbGl6ZWR9fC4vb3B0Z3JvdXAvb3B0aW9uJHtub3JtYWxpemVkfWApXG4gICAgfSkudGhlbigocmVzKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBzZWxlY3Qgb3B0aW9uXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50SWRDbGljayhyZXMudmFsdWUuRUxFTUVOVClcbiAgICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBzZWxlY3RCeVZpc2libGVUZXh0XG4iXX0= |