如何在 javascript 中按元素查找 Xpath
How to find the Xpath by element in javascript
每个人都知道使用 Xpath 查找元素,那里有多种工具可以查找元素。但我有元素。但是如何使用 javascript 找到该元素的 xpath。有什么办法可以找到Xpath吗
document.addEventListener('click', function(e) {
e = e || window.event;
var target = e.target || e.srcElement,
text = target.textContent || target.innerText;
alert(target.srcElement);
}, false);
有a comment on SO page,可能对您有帮助:
// Returns XPATH to element
function getPathTo(element) {
if (element.tagName == 'HTML')
return '/HTML[1]';
if (element===document.body)
return '/HTML[1]/BODY[1]';
var ix= 0;
var siblings= element.parentNode.childNodes;
for (var i= 0; i<siblings.length; i++) {
var sibling= siblings[i];
if (sibling===element)
return getPathTo(element.parentNode)+'/'+element.tagName+'['+(ix+1)+']';
if (sibling.nodeType===1 && sibling.tagName===element.tagName)
ix++;
}
}
// Usage examples:
const spanElem = getPathTo(document.getElementById('mySpan'));
console.log(spanElem);
// Output: "/HTML[1]/BODY[1]/DIV[1]/SPAN[1]"
const iElem = getPathTo(document.getElementsByTagName('i')[0]);
console.log(iElem);
// Output: "/HTML[1]/BODY[1]/DIV[1]/I[1]"
<div>
<span id="mySpan">Some</span>
<i>test</i>
</div>
每个人都知道使用 Xpath 查找元素,那里有多种工具可以查找元素。但我有元素。但是如何使用 javascript 找到该元素的 xpath。有什么办法可以找到Xpath吗
document.addEventListener('click', function(e) {
e = e || window.event;
var target = e.target || e.srcElement,
text = target.textContent || target.innerText;
alert(target.srcElement);
}, false);
有a comment on SO page,可能对您有帮助:
// Returns XPATH to element
function getPathTo(element) {
if (element.tagName == 'HTML')
return '/HTML[1]';
if (element===document.body)
return '/HTML[1]/BODY[1]';
var ix= 0;
var siblings= element.parentNode.childNodes;
for (var i= 0; i<siblings.length; i++) {
var sibling= siblings[i];
if (sibling===element)
return getPathTo(element.parentNode)+'/'+element.tagName+'['+(ix+1)+']';
if (sibling.nodeType===1 && sibling.tagName===element.tagName)
ix++;
}
}
// Usage examples:
const spanElem = getPathTo(document.getElementById('mySpan'));
console.log(spanElem);
// Output: "/HTML[1]/BODY[1]/DIV[1]/SPAN[1]"
const iElem = getPathTo(document.getElementsByTagName('i')[0]);
console.log(iElem);
// Output: "/HTML[1]/BODY[1]/DIV[1]/I[1]"
<div>
<span id="mySpan">Some</span>
<i>test</i>
</div>