VBA-登录网站-登录按钮

时间:2020-05-10 12:26:23

标签: vba web-scraping

下午好,

请原谅我,我是VBA的新手,并且一直在我的工作簿中进行练习,但是对于我的工作来说,扩展到Webscraping将非常有用。

以下是我的代码。

Sub pullsalesdatafromonline()

Dim IE As Object
Dim doc As HTMLDocument

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.navigate "https://www.peoplestuffuk.com/WFMMCDPRD/Login.jsp"

Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop

Set doc = IE.document

doc.getElementById("txtUserID").Click

doc.getElementById("txtUserID").Value = Usernameinserted

doc.getElementById("txtPassword").Click

doc.getElementById("txtPassword").Value = PasswordInserted

doc.getElementById("Login").Click

IE.navigate "https://www.peoplestuffuk.com/WFMMCDPRD/LoginSubmit.jsp"

IE.navigate "https://www.peoplestuffuk.com/WFMMCDPRD/ModuleSelection.jsp"

IE.navigate "https://www.peoplestuffuk.com/WFMMCDPRD/dashboard/main/dashboardmain.jsp"

IE.navigate "https://www.peoplestuffuk.com/WFMMCDPRD/rrd/matrixReport.jsp?fromPM=N"

End Sub

这是我要从中抓取的元素;

<INPUT onclick=javaScript:submitForm() class=button-t type=button value=Login>
<SPAN id=Login_span class=buttonbox></SPAN>

我看过其他一些引发.onclick事件的链接,但似乎不太清楚。

VBA中的错误突出显示:

IE.navigate "https://www.peoplestuffuk.com/WFMMCDPRD/ModuleSelection.jsp"

行。输入我的用户名和密码后,页面将刷新/尝试执行,然后清空登录名和密码信息,并将我留在登录名页面上。

将非常感谢某人的投入。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您要共享演示用户名和密码,则可以使用xhr登录。但是,就您当前的尝试而言,它们不是您在.getElementById()中使用它们的ID。鉴于以下方法可以使您登录。如果脚本无法执行此操作,请确保取消注释延迟。

Sub pullsalesdatafromonline()
    Dim IE As Object, doc As HTMLDocument

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True

    IE.navigate "https://www.peoplestuffuk.com/WFMMCDPRD/Login.jsp"

    While IE.Busy Or IE.readyState < 4: DoEvents: Wend
    Application.Wait Now + TimeValue("00:00:03")

    Set doc = IE.document

    doc.querySelector("[name='txtUserID']").innerText = "username"
    doc.querySelector("[name='txtPassword']").innerText = "password"

'    Application.Wait Now + TimeValue("00:00:03")
    doc.querySelector("input[value='Login']").Click
End Sub