0
當我單擊HTML頁面中的元素時,需要獲取XPath表達式。該解決方案是非常有幫助的:https://stackoverflow.com/a/5178132/1718124從Javascript中的多個元素獲取XPath
function createXPathFromElement(elm) {
var allNodes = document.getElementsByTagName('*');
for (segs = []; elm && elm.nodeType == 1; elm = elm.parentNode)
{
if (elm.hasAttribute('id')) {
var uniqueIdCount = 0;
for (var n=0;n < allNodes.length;n++) {
if (allNodes[n].hasAttribute('id') && allNodes[n].id == elm.id) uniqueIdCount++;
if (uniqueIdCount > 1) break;
};
if (uniqueIdCount == 1) {
segs.unshift('id("' + elm.getAttribute('id') + '")');
return segs.join('/');
} else {
segs.unshift(elm.localName.toLowerCase() + '[@id="' + elm.getAttribute('id') + '"]');
}
} else if (elm.hasAttribute('class')) {
segs.unshift(elm.localName.toLowerCase() + '[@class="' + elm.getAttribute('class') + '"]');
} else {
for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling) {
if (sib.localName == elm.localName) i++; };
segs.unshift(elm.localName.toLowerCase() + '[' + i + ']');
};
};
return segs.length ? '/' + segs.join('/') : null;
};
上面提到的JavaScript返回以下的XPath計算器的主網頁上的鏈接:
id("question-summary-21052053")/div[@class="summary"]/h3[1]/a[@class="question-hyperlink"]
但我需要這樣的XPath的所有鏈接的列表:
.//*/div[@class="summary"]/h3[1]/a[@class="question-hyperlink"]
如何更改上面的JavaScript代碼以返回上面的XPath? XPath必須與HtmlAgilityPack協同工作。
非常感謝!
你不想使用jQuery? – Jason
jQuery沒問題。我編輯了我的問題。還沒有在我的項目中使用過jQuery。 – jimbo