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

93.33% Statements 14/15
33.33% Branches 2/6
0% Functions 0/3
66.67% Lines 2/3
9 statements, 2 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                                                                                                                                                                 
/**
 *
 * 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=