好吧,我有一个登录live.com
的脚本,通过这个:
WebBrowser1.Document.GetElementById("login").SetAttribute("value", txtUsername.Text)
WebBrowser1.Document.GetElementById("passwd").SetAttribute("value", txtPassword.Text)
WebBrowser1.Document.GetElementById("SI").InvokeMember("Click")
这是非常基本的,但现在我需要知道用户是否输入了正确或错误的帐户凭据。因此,这将需要一条错误消息“无法登录”,但如果成功,我只需将webbrowser重定向到新页面。现在我不熟悉VB上的IF语句,但我知道有两种方法可以做到,但不知道怎么做。因此,第一种方法是在点击提交按钮后读取它所访问的URL,这将非常好并且有效(因此当有人输入不正确的帐户凭据时,它会将它们发送到错误页面,但是当您输入正确的时候它会把你送到正确的页面)。但我想要做的主要方式是阅读内容。如果页面在提交后显示“That Microsoft account doesn't exist. Enter a different email address or get
”,则会显示消息框“Wrong Account Credentials
”,反之亦然。我对此并不擅长,因为我从未真正使用过WebBrowser,但如果有人能以正确的方式引导我,我会非常感激。
答案 0 :(得分:0)
如果您想根据webbrowser中返回的内容进行评估,可以搜索因输入密码而加载的文档的innerhtml:
With WebBrowser1
Do Until Not (.IsBusy)
Application.DoEvents()
Loop
Do Until .ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
Loop
End With
Dim htmlText As String
If Not (WebBrowser1.Document.Body.InnerHtml) Is Nothing Then
htmlText = WebBrowser1.Document.Body.InnerHtml
If InStr(htmlText, "That Microsoft account doesn't exist.") Then
Messagebox.Show("Wrong Account Credentials")
'code to go here if it is true
Else
Messagebox.Show("Correct Account Credentials")
'code to go here if it is false
End If
End If
注意:如果innerhtml不起作用,您也可以尝试使用outerhtml。
由于您只想验证一次,因此尝试删除.DocumentChanged事件处理程序,因为除了初始登录之外,其他原因会触发;将其替换为在登录时调用“Click”事件后调用的子例程。
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
WebBrowser1.Document.GetElementById("login").SetAttribute("value", txtUsername.Text)
WebBrowser1.Document.GetElementById("passwd").SetAttribute("value", txtPassword.Text)
WebBrowser1.Document.GetElementById("SI").InvokeMember("Click")
verifyLogin()
End Sub
Private Sub verifyLogin()
With WebBrowser1
Do Until Not (.IsBusy)
Application.DoEvents()
Loop
Do Until .ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
Loop
End With
Dim htmlText As String
If Not (WebBrowser1.Document.Body.InnerHtml) Is Nothing Then
htmlText = WebBrowser1.Document.Body.InnerHtml
If InStr(htmlText, "Microsoft account") Then
MessageBox.Show("You have entered in a wrong password or the account doesn't exist.")
'code to go here if it is true
Else
MessageBox.Show("Sign in successful. Proceed on...")
'code to go here if it is false
End If
End If
End Sub