代码之家  ›  专栏  ›  技术社区  ›  Davey

使用VBA(getElementsByClassName)单击Internet Explorer中的按钮

  •  0
  • Davey  · 技术社区  · 8 年前

    我正在尝试使用VBA和HTML单击Internet Explorer窗口中的按钮。按钮没有“id”,所以我必须通过“classname”找到它

    按钮的HTML代码如下:

    <button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only`"
    

    VBA代码:

    Private Sub CommandButton21_Click()
    
    Const cURL = "xxxxxx.com"
    Const cUsername = "xxxxxx"
    Const cPassword = "xxxxxx"
    
    Dim IE As InternetExplorer
    Dim doc As HTMLDocument
    Dim LoginForm As HTMLFormElement
    Dim UserNameInputBox As HTMLInputElement
    Dim PasswordInputBox As HTMLInputElement
    Dim SignInButton As HTMLInputButtonElement
    Dim CVBATButton As HTMLInputButtonElement
    Set IE = New InternetExplorer
    
    IE.Visible = True
    IE.navigate cURL
    
    Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop
    
    Set doc = IE.document
    
    
    
    'A previous login window that leads me into a new window, where I need to click a button.
    
    Set LoginForm = doc.forms(0)
    Set UserNameInputBox = doc.getElementById("BIA_Login")
    UserNameInputBox.Value = cUsername
    Set PasswordInputBox = doc.getElementById("BIA_Pass")
    PasswordInputBox.Value = cPassword
    Set SignInButton = doc.getElementById("login")
    SignInButton.Click
    
    'It's this portion of the code below that I'm struggling with
    
    Set doc = IE.document
    Set LoginForm = doc.forms(0)
    Application.Wait Now + TimeValue("00:00:03")
    Set CVBATButton = doc.getElementsByClassName("ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only")
    CVBATButton.Click
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Zarkanel    7 年前

    我也犯了同样的错误,

    Set CVBATButton = doc.getElementsByClassName("ui-button ui-widget ui-state-
    default ui-corner-all ui-button-text-only")
      For Each btn In CVBATButton
         btn.Click
         Exit For
      Next
    
        2
  •  0
  •   castletheperson    8 年前

    getElementsByClassName 返回集合。您需要访问第一个索引,或迭代集合。

    Set CVBATButton = doc.getElementsByClassName("ui-button ui-widget ...")(1)
    CVBATButton.Click