0

複数のスライドシェア アカウントを管理するためのツールを作成しようとしています。それらのそれぞれに手動でログインおよびログアウトするのはかなり面倒なので、ログインを行う簡単な 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
4

1 に答える 1

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

役立つかもしれないもう1つのトリック:

モバイル バージョンでのログインを自動化しようとしている一部のデスクトップサイトで Web ブラウザ コントロールを介してログインする際に問題が発生していることがわかりました。

于 2013-05-21T14:11:19.323 に答える