我正在尝试创建一个管理多个Slidehare帐户的工具。手动登录和注销每个人都非常烦人,所以想想创建一个简单的webbrowser工具,为我做登录。
问题是,当我尝试点击登录按钮时,它告诉我'字段需要填充'(并且它们是)然后当我聚焦控件并尝试手动按下登录时(从webbrowser控件内)我告诉我,这是'无效的用户名/密码组合'
我甚至更进了一步,从输入中删除了文本,并从文本文件中重写了相同的文本,但是出现了相同的“无效用户/通行证”按钮。
当我尝试从实际的IE浏览器手动执行此操作时,它会记录没有问题。我不知道我做错了什么。这是代码:
Private Sub targetSlideshare()
Dim details() As String
details = accounts(currentAcc).Split(":")
user = details(0)
pass = details(1)
Label19.Text = (currentAcc + 1).ToString + "/" + accounts.Length.ToString
status = "Logout"
Label20.Text = status
loaded2 = False
WebBrowser2.Navigate("https://www.slideshare.net/logout")
While loaded2 = False
Threading.Thread.Sleep(1000)
End While
Threading.Thread.Sleep(1000)
status = "Logging In"
Label20.Text = status
loaded2 = False
WebBrowser2.Navigate("https://www.slideshare.net/login")
While loaded2 = False
Threading.Thread.Sleep(1000)
End While
Threading.Thread.Sleep(5000)
End Sub
Private Sub WebBrowser2_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser2.DocumentCompleted
If WebBrowser2.ReadyState <> WebBrowserReadyState.Complete Then
Exit Sub
End If
If status = "Logout" Then
loaded2 = True
ElseIf status = "Logging In" Then
WebBrowser2.Document.GetElementById("user_login").SetAttribute("value", user)
'WebBrowser2.Document.GetElementById("user_login").SetAttribute("placeholder", Nothing)
WebBrowser2.Document.GetElementById("user_password").SetAttribute("value", pass)
'WebBrowser2.Document.GetElementById("user_password").SetAttribute("placeholder", Nothing)
Dim allelements As HtmlElementCollection = WebBrowser2.Document.All
For Each webpageelement As HtmlElement In allelements
If webpageelement.GetAttribute("value") = "Login" Then
status = "Loading"
webpageelement.InvokeMember("click")
End If
Next
loaded2 = True
End Sub
答案 0 :(得分:0)
我无法从我目前所在的PC上访问该网站,但以下内容适用于我登录Google:
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
WebBrowser1.Navigate("https://accounts.google.com/ServiceLogin?hl=en&continue=https://www.google.com/")
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
WebBrowser1.Document.GetElementById("Email").InnerText = user.ToString
WebBrowser1.Document.GetElementById("Passwd").InnerText = pass.ToString
WebBrowser1.Document.GetElementById("signIn").InvokeMember("click")
End Sub
另一个可能有用的技巧:
我发现当我在某些桌面网站上通过webbrowser控件登录尝试自动登录移动版本时遇到问题,即:https://www.slideshare.net/mobile/login有时会有效。