複数のスライドシェア アカウントを管理するためのツールを作成しようとしています。それらのそれぞれに手動でログインおよびログアウトするのはかなり面倒なので、ログインを行う簡単な Web ブラウザー ツールを作成することを考えました。
問題は、ログインボタンを押しようとすると、「フィールドにデータを入力する必要がある」と表示され(実際に入力されている)、コントロールにフォーカスして(Webブラウザコントロール内から)手動でログインを押そうとすると、 「無効なユーザー名とパスワードの組み合わせ」であること
さらに一歩進んで、入力からテキストを削除し、テキストファイルから同じテキストを貼り付けましたが、同じ「無効なユーザー/パス」メッセージが表示されます。
実際の 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