@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
27 lines • 2.78 kB
JavaScript
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