UNPKG

@luminati-io/webdriverio8

Version:

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

47 lines (45 loc) 3.32 kB
import { enhanceElementsArray } from '../../utils/index.js'; import { getElements } from '../../utils/getElementObject.js'; import { ELEMENT_KEY } from '../../constants.js'; /** * * The `customs$$` allows you to use a custom strategy declared by using `browser.addLocatorStrategy`. * Read more on custom selector stratgies in the [Selector docs](../../selectors#custom-selector-strategies). * * <example> :example.js it('should get all the plugin wrapper buttons', async () => { await browser.url('https://webdriver.io') await browser.addLocatorStrategy('myStrat', (selector) => { return document.querySelectorAll(selector) }) const pluginWrapper = await browser.custom$$('myStrat', '.pluginWrapper') console.log(await pluginWrapper.length) // 4 }) * </example> * * @alias custom$$ * @param {string} strategyName * @param {*} strategyArguments * @return {WebdriverIO.ElementArray} */ export async function custom$$(strategyName, ...strategyArguments) { const strategy = this.strategies.get(strategyName); if (!strategy) { throw Error('No strategy found for ' + strategyName); } const strategyRef = { strategy, strategyName, strategyArguments }; let res = await this.execute(strategy, ...strategyArguments); /** * if the user's script return just one element * then we convert it to an array as this method * should return multiple elements */ if (!Array.isArray(res)) { res = [res]; } res = res.filter(el => !!el && typeof el[ELEMENT_KEY] === 'string'); const elements = res.length ? await getElements.call(this, strategyRef, res) : []; return enhanceElementsArray(elements, this, strategyName, 'custom$$', strategyArguments); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tJCQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYnJvd3Nlci9jdXN0b20kJC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBR2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUUxQixZQUFvQixFQUNwQixHQUFHLGlCQUF3QjtJQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQTJCLENBQUE7SUFFNUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ1osTUFBTSxLQUFLLENBQUMsd0JBQXdCLEdBQUcsWUFBWSxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUE0QixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtJQUMxRixJQUFJLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQTtJQUU1RDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QixHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNmLENBQUM7SUFFRCxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUE7SUFFbkUsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQXFDLENBQUE7SUFDcEgsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtBQUM1RixDQUFDIn0=