UNPKG

@luminati-io/webdriverio8

Version:

Next-gen browser and mobile automation test framework for Node.js

64 lines 3.97 kB
import { getElementFromResponse } from '../../utils/index.js'; /** * * Select option with displayed 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 it('demonstrate the selectByVisibleText command', async () => { const selectBox = await $('#selectbox'); console.log(await selectBox.getText('option:checked')); // returns "uno" await selectBox.selectByVisibleText('cuatro'); console.log(await selectBox.getText('option:checked')); // returns "cuatro" }) * </example> * * @alias element.selectByVisibleText * @param {String|Number} text text of option element to get selected * @uses protocol/findElementsFromElement, protocol/elementClick * @type action * */ export async function selectByVisibleText(text) { /** * convert value into string */ text = typeof text === 'number' ? text.toString() : text; const normalized = text .trim() // strip leading and trailing white-space characters .replace(/\s+/, ' '); // replace sequences of whitespace characters by a single space /** * find option element using xpath */ const formatted = /"/.test(normalized) ? 'concat("' + normalized.split('"').join('", \'"\', "') + '")' : `"${normalized}"`; const dotFormat = `[. = ${formatted}]`; const spaceFormat = `[normalize-space(text()) = ${formatted}]`; const selections = [ `./option${dotFormat}`, `./option${spaceFormat}`, `./optgroup/option${dotFormat}`, `./optgroup/option${spaceFormat}`, ]; const optionElement = await this.findElementFromElement(this.elementId, 'xpath', selections.join('|')); if (optionElement && optionElement.error === 'no such element') { throw new Error(`Option with text "${text}" not found.`); } /** * select option */ return this.elementClick(getElementFromResponse(optionElement)); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0QnlWaXNpYmxlVGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9lbGVtZW50L3NlbGVjdEJ5VmlzaWJsZVRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUVyQyxJQUFxQjtJQUVyQjs7T0FFRztJQUNILElBQUksR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRO1FBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFFVixNQUFNLFVBQVUsR0FBRyxJQUFJO1NBQ2xCLElBQUksRUFBRSxDQUFDLG9EQUFvRDtTQUMzRCxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUMsK0RBQStEO0lBRXhGOztNQUVFO0lBQ0YsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJO1FBQy9ELENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFBO0lBQ3ZCLE1BQU0sU0FBUyxHQUFHLFFBQVEsU0FBUyxHQUFHLENBQUE7SUFDdEMsTUFBTSxXQUFXLEdBQUcsOEJBQThCLFNBQVMsR0FBRyxDQUFBO0lBRTlELE1BQU0sVUFBVSxHQUFHO1FBQ2YsV0FBVyxTQUFTLEVBQUU7UUFDdEIsV0FBVyxXQUFXLEVBQUU7UUFDeEIsb0JBQW9CLFNBQVMsRUFBRTtRQUMvQixvQkFBb0IsV0FBVyxFQUFFO0tBQ3BDLENBQUE7SUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFFdEcsSUFBSSxhQUFhLElBQUssYUFBcUIsQ0FBQyxLQUFLLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUN0RSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLGNBQWMsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFFRDs7TUFFRTtJQUNGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQVcsQ0FBQyxDQUFBO0FBQzdFLENBQUMifQ==