UNPKG

webdriverio-workflo

Version:

This is a customized version of webdriverio for use with workflo framework.

66 lines (57 loc) 2.07 kB
/** * * 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 it('should demonstrate the selectByIndex command', function () { var selectBox = $('#selectbox'); console.log(selectBox.getValue()); // returns "someValue0" selectBox.selectByIndex(4); console.log(selectBox.getValue()); // returns "someValue4" }); * </example> * * @alias browser.selectByIndex * @param {String} selector select element that contains the options * @param {Number} index option index * @uses protocol/element, protocol/elementIdElements, protocol/elementIdClick * @type action * */ import { CommandError, RuntimeError } from '../utils/ErrorHandler' let selectByIndex = function (selector, index) { /*! * negative index check */ if (index < 0) { throw new CommandError('index needs to be 0 or any other positive number') } return this.element(selector).then((element) => { /** * check if element was found and throw error if not */ if (!element.value) { throw new RuntimeError(7) } return this.elementIdElements(element.value.ELEMENT, '<option>') }).then((elements) => { if (elements.value.length === 0) { throw new CommandError(`select element (${selector}) doesn't contain any option element`) } if (elements.value.length - 1 < index) { throw new CommandError(`option with index "${index}" not found. Select element (${selector}) only contains ${elements.value.length} option elements`) } return this.elementIdClick(elements.value[index].ELEMENT) }) } export default selectByIndex