avi-analytics-sdk
Version:
An analytics SDK for capturing user interactions
28 lines (27 loc) • 874 B
JavaScript
export function getCssSelector(element) {
if (!(element instanceof Element))
return null;
const paths = [];
while (element && element.nodeType === Node.ELEMENT_NODE) {
let selector = element.nodeName.toLowerCase();
if (element.id) {
selector += `#${element.id}`;
paths.unshift(selector);
break;
}
else {
let sibling = element;
let siblingIndex = 1;
while ((sibling = sibling.previousElementSibling)) {
if (sibling.nodeName.toLowerCase() === selector)
siblingIndex++;
}
if (siblingIndex > 1) {
selector += `:nth-of-type(${siblingIndex})`;
}
}
paths.unshift(selector);
element = element.parentElement;
}
return paths.join(" > ");
}