UNPKG

@luminati-io/webdriverio8

Version:

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

43 lines 3.54 kB
import logger from '@wdio/logger'; import { shadowFnFactory } from '../../scripts/shadowFnFactory.js'; import { getElements } from '../../utils/getElementObject.js'; import { getBrowserObject, enhanceElementsArray } from '../../utils/index.js'; import { findStrategy } from '../../utils/findStrategy.js'; import { SHADOW_ELEMENT_KEY } from '../../constants.js'; const log = logger('webdriverio'); /** * * Access elements inside a given element's shadowRoot. If you are working * with lots of nested shadow roots, an alternative approach to `shadow$$` * is to use the [deep selector](https://webdriver.io/docs/selectors#deep-selectors). * * <example> :shadow$$.js it('should return elements inside a shadowRoot', async () => { const innerEl = await $('.input').shadow$$('#innerEl'); console.log(await innerEl.getValue()); // outputs: 'test123' }); * </example> * * @alias element.shadow$$ * @param {String|Function} selector selector or JS Function to fetch a certain element * @return {ElementArray} * @type utility * */ export async function shadow$$(selector) { const browser = getBrowserObject(this); try { const shadowRoot = await browser.getElementShadowRoot(this.elementId); const { using, value } = findStrategy(selector, this.isW3C, this.isMobile); const res = await browser.findElementsFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY], using, value); const elements = await getElements.call(this, selector, res, { isShadowElement: true }); return enhanceElementsArray(elements, this, selector); } catch (err) { log.warn(`Failed to fetch element within shadow DOM using WebDriver command: ${err.message}!\n` + 'Falling back to JavaScript shim.'); return await this.$$(shadowFnFactory(selector, true)); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93JCQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZWxlbWVudC9zaGFkb3ckJC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFFakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFHdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRLENBRTFCLFFBQWdCO0lBRWhCLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXRDLElBQUksQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNyRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksQ0FBQyxRQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BGLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNsRyxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQW9CLEVBQUUsR0FBRyxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDbkcsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQW9CLENBQTZCLENBQUE7SUFDakcsQ0FBQztJQUFDLE9BQU8sR0FBWSxFQUFFLENBQUM7UUFDcEIsR0FBRyxDQUFDLElBQUksQ0FDSixzRUFBdUUsR0FBYSxDQUFDLE9BQU8sS0FBSztZQUNqRyxrQ0FBa0MsQ0FDckMsQ0FBQTtRQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0FBQ0wsQ0FBQyJ9