如何使用vba excel单击具有类名的网页上的按钮

时间:2016-03-12 19:08:03

标签: excel vba excel-vba internet-explorer web-scraping

我是VBA excel的新秀。 有一个网页应用程序在其中 我需要点击一个按钮,其来源是

<em class="x-btn-arow" unselectable="on">
<button class= x-btn-text" id="ext-gen7576" style=""   type="button">Actions</button>

Sub xx()
Dim IE As Object
Dim doc As HTMLDocument
Dim l As IHTMLElement
Dim lo As IHTMLElementCollection




Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://theapplicationlink"
Do
DoEvents
Loop Until IE.ReadyState = 4



Set doc = IE.Document
Set lo = doc.getElementsByTagName("button")
For Each l In lo
If l.getAttribute("class") = "x-btn-text" Then
l.click



End If
Next

End Sub

它不会抛出任何错误,但它不会点击按钮。

我无法使用ID,因为每次启动应用程序时都会不断更改。 其他按钮的类和类型也相同。

原谅我任何技术错误 任何帮助都将是一个巨大的帮助。

2 个答案:

答案 0 :(得分:1)

有一个ID。它是完全改变还是部分保持不变?如果是这样的话,您可以使用CSS选择器在保持相同的位上进行部分匹配。

除此之外,您可以使用:

objIE.document.querySelector("button[class*= x-btn-text]").Click

这使用CSS选择器定位button[class*= x-btn-text]的元素。这将是带有button标签的第一个元素,其属性为class,其值包含x-btn-text

答案 1 :(得分:0)

&#34;按钮&#34;不是HTML标记。使用&#34;标记&#34;。让我举个例子。替换&#34; strTagName&#34;使用HTML标记,包含您想要点击的内容。

Dim objTag As Object
For Each objTag In objIE.document.getElementsByTagName(strTagName)
    If InStr(objTag.outerHTML, "x-btn-text") > 0 Then

        objTag.Click
        Exit For

    End If
Next