webdriverio
Version:
Next-gen browser and mobile automation test framework for Node.js
34 lines (28 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = refetchElement;
var _implicitWait = _interopRequireDefault(require("./implicitWait"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
async function refetchElement(currentElement, commandName) {
let selectors = [];
while (currentElement.elementId && currentElement.parent) {
selectors.push({
selector: currentElement.selector,
index: currentElement.index || 0
});
currentElement = currentElement.parent;
}
selectors.reverse();
const length = selectors.length;
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));
return await (0, _implicitWait.default)(nextElement, currentIndex + 1 < length ? '$' : commandName);
}, Promise.resolve(currentElement));
}