如何在特定网站上执行(登录)按钮?

时间:2019-09-29 18:00:23

标签: vba internet-explorer

我在网上找到了这个VBA代码,例如,它可以在Facebook上运行。

https://www.solarmanpv.com/portal/LoginPage.aspx上不起作用。它会打开Internet Explorer,将凭据放在正确的位置,但不会按登录键。

当我尝试运行时,VBA上显示错误'424'。

Sub LoginViaBrowser()
    Dim Dc_Usuario As String
    Dim Dc_Senha As String
    Dim Dc_URL As String
    Dim objIE As New InternetExplorer 'Referencie "Microsoft Internet Controls"

    objIE.Visible = True

    Dc_Usuario = "user@email.com"
    Dc_Senha = "pass"
    Dc_URL = "https://www.solarmanpv.com/portal/LoginPage.aspx"

    objIE.Navigate2 Dc_URL

    Do Until objIE.readyState = READYSTATE_COMPLETE
        DoEvents
    Loop

    objIE.document.all("uNam").innertext = Dc_Usuario
    objIE.document.all("uPwd").innertext = Dc_Senha

    objIE.document.all("login").submit

End Sub

2 个答案:

答案 0 :(得分:0)

请尝试使用F12开发人员工具检查html元素,然后您会发现登录按钮的ID是“登录”,而不是“登录”。

尝试如下修改您的代码:

Sub LoginViaBrowser()
    Dim IE As Object

    Dim Dc_Usuario As String
    Dim Dc_Senha As String
    Dim Dc_URL As String

    Dim txtNam As Object, txtPwd As Object

    Dc_Usuario = "user@email.com"
    Dc_Senha = "pass"

    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Visible = True
        .Navigate "https://www.solarmanpv.com/portal/LoginPage.aspx"

        While IE.ReadyState <> 4
            DoEvents
        Wend
        IE.Document.getElementById("uNam").Value = Dc_Usuario
        IE.Document.getElementById("uPwd").Value = Dc_Senha

        IE.Document.getElementById("Loginning").Click

    End With
    Set IE = Nothing
End Sub

答案 1 :(得分:0)

您是否尝试过通过ID调用它?

function simulateLoadData() { 
  return new Promise(resolve => {
    setTimeout(() => {
      resolve("data"); // once I get the data, I pass it through resolve
    }, 2000); // just for illustration purposes and simulate query to remote machine
  });
}

function getConfig() {
  return simulateLoadData().then(function(dataLoaded){ // here I retrieve the data resolved
    return { data: dataLoaded }; // I can pass dataLoaded to my config
  });
}

async function app() {
    var config = await getConfig(); // here is where I retrieve the returned config
    console.log("config", config); // config > Object { data: "data" } 
}

app();