我在网上找到了这个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
答案 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();