UNPKG

@luminati-io/webdriverio8

Version:

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

27 lines 2.78 kB
import implicitWait from './implicitWait.js'; /** * helper utility to refetch an element and all its parent elements when running * into stale element exception errors */ export default async function refetchElement(currentElement, commandName) { const selectors = []; //Crawl back to the browser object, and cache all selectors while (currentElement.elementId && currentElement.parent) { selectors.push({ selector: currentElement.selector, index: currentElement.index || 0 }); currentElement = currentElement.parent; } selectors.reverse(); const length = selectors.length; // Beginning with the browser object, rechain return selectors.reduce(async (elementPromise, { selector, index }, currentIndex) => { const resolvedElement = await elementPromise; let nextElement = index > 0 ? (await resolvedElement.$$(selector))[index] : null; nextElement = nextElement || await resolvedElement.$(selector); /** * For error purposes, changing command name to '$' if we aren't * on the last element of the array */ return await implicitWait(nextElement, currentIndex + 1 < length ? '$' : commandName); }, Promise.resolve(currentElement)); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXRjaEVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVmZXRjaEVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLE1BQU0sbUJBQW1CLENBQUE7QUFHNUM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUN4QyxjQUFtQyxFQUNuQyxXQUFtQjtJQUVuQixNQUFNLFNBQVMsR0FHVCxFQUFFLENBQUE7SUFFUiwyREFBMkQ7SUFDM0QsT0FBTyxjQUFjLENBQUMsU0FBUyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN2RixjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQTZCLENBQUE7SUFDakUsQ0FBQztJQUNELFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUVuQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFBO0lBRS9CLDZDQUE2QztJQUM3QyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRTtRQUNoRixNQUFNLGVBQWUsR0FBRyxNQUFNLGNBQWMsQ0FBQTtRQUM1QyxJQUFJLFdBQVcsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sZUFBZSxDQUFDLEVBQUUsQ0FBQyxRQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQzFGLFdBQVcsR0FBRyxXQUFXLElBQUksTUFBTSxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzlEOzs7V0FHRztRQUNILE9BQU8sTUFBTSxZQUFZLENBQUMsV0FBVyxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3pGLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7QUFDdkMsQ0FBQyJ9