(elm)
| 4717 | } |
| 4718 | |
| 4719 | function createXPathFromElement(elm) { |
| 4720 | let allNodes = document.getElementsByTagName('*'), segs; |
| 4721 | for (segs = []; elm && elm.nodeType === 1; elm = elm.parentNode) { |
| 4722 | if (compareNodeName(elm, ["body", "html"])) { |
| 4723 | segs.unshift(elm.localName.toLowerCase()); |
| 4724 | continue; |
| 4725 | } |
| 4726 | if (elm.hasAttribute && elm.hasAttribute('id')) { |
| 4727 | var uniqueIdCount = 0; |
| 4728 | for (var n = 0; n < allNodes.length; n++) { |
| 4729 | if (allNodes[n].hasAttribute('id') && allNodes[n].id === elm.id) { |
| 4730 | uniqueIdCount++; |
| 4731 | } |
| 4732 | if (uniqueIdCount > 1) { |
| 4733 | break; |
| 4734 | } |
| 4735 | } |
| 4736 | if ( uniqueIdCount === 1) { |
| 4737 | segs.unshift('id("' + elm.getAttribute('id') + '")'); |
| 4738 | return segs.join('/'); |
| 4739 | } else { |
| 4740 | segs.unshift(elm.localName.toLowerCase() + '[@id="' + elm.getAttribute('id') + '"]'); |
| 4741 | } |
| 4742 | } else if (elm.hasAttribute && elm.hasAttribute('class')) { |
| 4743 | segs.unshift(elm.localName.toLowerCase() + '[@class="' + elm.getAttribute('class') + '"]'); |
| 4744 | } else { |
| 4745 | let i, sib; |
| 4746 | for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling) { |
| 4747 | if (sib.localName === elm.localName) { |
| 4748 | i++; |
| 4749 | } |
| 4750 | } |
| 4751 | segs.unshift(elm.localName.toLowerCase() + '[' + i + ']'); |
| 4752 | } |
| 4753 | } |
| 4754 | return segs.length ? '/' + segs.join('/') : null; |
| 4755 | } |
| 4756 | |
| 4757 | function createHTML(html, doc) { |
| 4758 | const targetDoc = doc || document; |
no test coverage detected