2016-06-03 11 views
1

In VBA mich, wenn dies möglich gewundert ohne Id und Name-Attribut auf dieser HTML-Schaltfläche klicken:VBA: Zugriff auf ein HTML-Elemente ohne Id oder Namen

<ul aria-hidden="false" role="menu"> 
    <li> 
     <button ..></button> 
    </li> 
    <li> 
     <button ..></button> 
    </li> 
    <li> <!-- THE THIRD li, I would like to access this button --> 
     <button title="exporter" role="menuitem" data-ng-disabled="myfunction()">my text</button> 
    </li> 
</ul> 

Für andere Elemente mit Id oder einem Namen, hier ist wie ich:

Set IE = CreateObject("InternetExplorer.Application") 
IE.navigate "site.com" 
IE.document.getElementById("submitBtn").Click 
// IE.document.getElementByName("submitBtn").Click 

aber in meinem vorherigen Beispiel gibt es kein „Id“ oder „Namen“ zur Verfügung, nur ein Title-Attribut für die Schaltfläche, gibt es eine Möglichkeit, diese Taste zugreifen?

Irgendeine Idee?


Eine andere Art und Weise habe ich versucht, aber auch nicht funktioniert:

das Ziel ist, den Knopf zu klicken, also versuchte ich direkt "myfunction()" auszuführen, wie folgt aus:

IE.document.parentWindow.execScript "myfunction()", "Javascript" 

btu Ich bekomme einen Ausführungsfehler (Fehler 80020101) .. keine Ahnung?

+0

Ja, Sie können es als n-tes Kind (childNodes []) eines Elements angeben, das eine ID oder einen Namen hat. –

+0

Wenn der HTML-Code XML ist, können Sie auch XPath verwenden, um Knoten/Attribute basierend auf Attributen, Position oder Geschwister zu wählen. – ThunderFrame

+0

Oder GetElementsByTagname und durchlaufen Sie die zurückgegebene Auflistung, bis Sie eine mit dem richtigen Titelattribut finden. – Tim

Antwort

1

Haben Sie versucht, die Elemente durchzulaufen und einen möglichen Weg zu finden, wie sie erkannt wird?

For Each element In IE.Document.all 
If element.className = "exporter" Then 
Set LookedElement = element 
Exit For 
End If 
Next 

Andere nützliche Funktion Elemente setzen

Set elems = IE.Document.getelementsbytagname("exporter") 
Set elems = IE.Document.getElementsByName("exporter") 

Es kann sinnvoller sein, die Referenz (Referencen-> Microsoft Internet Controls) hinzuzufügen, so können Sie alle Befehle für IE statt spät verfügbar sehen Bindung.

+1

ja und für diejenigen Wer hat diese Referenz nicht wie ich zuvor gesehen, shdocvw.dll fehlt einfach, importieren Sie es aus Ihren System32-Dateien – Julien

Verwandte Themen