Есть ли способ извлечь DomXPath из определенных HTML-элементов с помощью Vbscript в Internet Explorer ???
Sub WaitForLoad 'Sub to wait for browser to load
Do While IE.Busy
WScript.Sleep 10
Loop
End Sub
Dim IE
Dim example1
Dim example2
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.lotteimall.com/goods/viewGoodsDetail.lotte?goods_no=12570568"
WaitForLoad
Set objRoot = ie.document
MsgBox objRoot.getElementById("win10").name
Dim vXPath : vXPath = "//*[@id='win10']"
Set example1 = objRoot.selectSingleNode(vXPath) 'this works for xml
Set example2 = objRoot.getElemetByXPath(vXPath) 'this works in javascript
'none of these works in IE html
нет такой функции DomXPath, как 'getElemetByXPath' в объекте документа IE, я все еще не могправильный метод, который возвращает DomXPath.
Что касается javascript,
function XPath(elm) {
for (segs = []; elm && elm.nodeType == 1; elm = elm.parentNode) {
if (elm.hasAttribute('id')) {
segs.unshift('id("' + elm.getAttribute('id') + '")')
return segs.join('/')
}
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
}
var result = windows.document.evaluate("//div[@class='division_product_tab']//img", document, null, XPathResult.ANY_TYPE, null);
var node, nodes = []
while (node = result.iterateNext())
nodes.push(XPath(node));
console.log(nodes);
Возвращает специфичный для объекта DomXpath.В этом случае "// div [@ class = 'Division_product_tab'] // img", который является объектом img.но это работает только в Dev Tool.
Я надеюсь, что может быть решение для этого