@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
53 lines • 2.9 kB
JavaScript
import { getElementFromResponse } from '../../utils/index.js';
/**
*
* 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', async () => {
const selectBox = await $('#selectbox');
console.log(await selectBox.getValue()); // returns "someValue0"
await selectBox.selectByIndex(4);
console.log(await selectBox.getValue()); // returns "someValue4"
});
* </example>
*
* @alias element.selectByIndexs
* @param {number} index option index
* @uses protocol/findElementsFromElement, protocol/elementClick
* @type action
*
*/
export async function selectByIndex(index) {
/**
* negative index check
*/
if (index < 0) {
throw new Error('Index needs to be 0 or any other positive number');
}
/**
* get option elememnts using css
*/
const optionElements = await this.findElementsFromElement(this.elementId, 'css selector', 'option');
if (optionElements.length === 0) {
throw new Error('Select element doesn\'t contain any option element');
}
if (optionElements.length - 1 < index) {
throw new Error(`Option with index "${index}" not found. Select element only contains ${optionElements.length} option elements`);
}
/**
* select option
*/
return this.elementClick(getElementFromResponse(optionElements[index]));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0QnlJbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9lbGVtZW50L3NlbGVjdEJ5SW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FFL0IsS0FBYTtJQUViOztPQUVHO0lBQ0gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVEOztNQUVFO0lBQ0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUcsUUFBUSxDQUFDLENBQUE7SUFFcEcsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixLQUFLLDZDQUE2QyxjQUFjLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxDQUFBO0lBQ3BJLENBQUM7SUFFRDs7TUFFRTtJQUNGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQVcsQ0FBQyxDQUFBO0FBQ3JGLENBQUMifQ==