2008-10-16 6 views
7

Ich habe eine HTML-Seite auf meinem Webbrowser-Objekt geöffnet, kann ich Benutzername und Passwort in Ordnung eingeben, aber ich bin stecken und weiß nicht, wie Sie die Informationen übermitteln. Hier ist der HTML-Code für das Benutzername/Passwort ein:VB.NET - Klicken Sie auf Submit Button auf Webbrowser Seite

<div id="signin"> 
    <h2 class="ir"> 
     <em></em>Sign in</h2> 
    <form action="/login/" method="post"> 
    <input id="login-url" name="login[url]" 
      type="hidden" value="/characters/" /> 
    <input id="login-urlError" name="login[urlError]" 
      type="hidden" value="/account/?error=1" /> 
    <fieldset> 
     <ul> 
      <li class="row"> 
       <label for="login-username"> 
        Username <span class="req">*</span> 
       </label> 
       <input id="login-username" name="login[username]" 
         type="text" class="TextBox" value="" /> 
      </li> 
      <li class="row"> 
       <label for="login-password"> 
        Password <span class="req">*</span> 
       </label> 
       <input id="login-password" name="login[password]" 
         type="password" class="TextBox Password" value="" /> 
      </li> 
      <li class="but"> 
       <input name="login[submit]" type="image" 
         class="img" alt="Login &raquo;" 
         src="/_pub/img/hp/but-login.png" /> 
      </li> 
     </ul> 
    </fieldset> 
    </form> 
    <p> 
     <a href="/account/password-reset/">ACCOUNT TROUBLE?</a> 
    </p> 
</div> 

Ich benutze die nach dem Benutzernamen und Passwort eingeben:

WebBrowser1.Document.GetElementById("login-username").SetAttribute("Value", Information.txtuser.Text) 
WebBrowser1.Document.GetElementById("login-password").SetAttribute("Value", Information.txtpass.Text) 

Was sollte ich jetzt die Informationen zu übermitteln? Ich habe versucht, das Element nach Namen zu bekommen und immer Index außerhalb des Bereichs Fehler erhalten, Index sollte -1 oder 0 sein, aber es war.

Ihre Hilfe würde stark appriziert werden !!

Antwort

0

Sie könnten versuchen, dem Formular eine ID zu geben, um es zu erhalten, und dann form.submit() von einem Javascript-Aufruf aufrufen.

1

Dies scheint leicht zu funktionieren.


Public Function LoginAsTech(ByVal UserID As String, ByVal Pass As String) As Boolean 
     Dim MyDoc As New mshtml.HTMLDocument 
     Dim DocElements As mshtml.IHTMLElementCollection = Nothing 
     Dim LoginForm As mshtml.HTMLFormElement = Nothing 

     ASPComplete = 0 
     WB.Navigate(VitecLoginURI) 
     BrowserLoop() 

     MyDoc = WB.Document.DomDocument 
     DocElements = MyDoc.getElementsByTagName("input") 
     For Each i As mshtml.IHTMLElement In DocElements 

      Select Case i.name 
       Case "seLogin$UserName" 
        i.value = UserID 
       Case "seLogin$Password" 
        i.value = Pass 
       Case Else 
        Exit Select 
      End Select 

      frmServiceCalls.txtOut.Text &= i.name & " : " & i.value & " : " & i.type & vbCrLf 
     Next i 

     'Old Method for Clicking submit 
     'WB.Document.Forms("form1").InvokeMember("submit") 


     'Better Method to click submit 
     LoginForm = MyDoc.forms.item("form1") 
     LoginForm.item("seLogin$LoginButton").click() 
     ASPComplete = 0 
     BrowserLoop() 



     MyDoc= WB.Document.DomDocument 
     DocElements = MyDoc.getElementsByTagName("input") 
     For Each j As mshtml.IHTMLElement In DocElements 
      frmServiceCalls.txtOut.Text &= j.name & " : " & j.value & " : " & j.type & vbCrLf 

     Next j 

     frmServiceCalls.txtOut.Text &= vbCrLf & vbCrLf & WB.Url.AbsoluteUri & vbCrLf 
     Return 1 
End Function 
3

WebBrowser1.Document.GetElementById(*element id string*).InvokeMember("submit")

2

die zu diesem Problem meine Lösung für etwas ähnliches ist.

System.Windows.Forms.WebBrowser www; 
void VerificarWebSites() 
{ 
      www = new System.Windows.Forms.WebBrowser(); 
      www.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(www_DocumentCompleted_login); 
      www.Navigate(new Uri("http://www.meusite.com.br")); 
} 
void www_DocumentCompleted_login(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e){    
      www.DocumentCompleted -= new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(www_DocumentCompleted_login); 
      www.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(www_DocumentCompleted_logado); 

      www.Document.Forms[0].All["tbx_login"].SetAttribute("value", "Gostoso"); 
      www.Document.Forms[0].All["tbx_senha"].SetAttribute("value", "abcdef"); 
      www.Document.GetElementById("btn_login").Focus(); 
      www.Document.GetElementById("btn_login").InvokeMember("click"); 
} 
void www_DocumentCompleted_logado(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e){ 
      System.IO.StreamWriter sw = new StreamWriter("c:\\saida_teste.txt"); 
      sw.Write(www.DocumentText); 
      sw.Close(); 
      MessageBox.Show(e.Url.AbsolutePath); 
} 
2

Ich suchte eine Lösung nicht die „SendKeys(CHR(13))“ Methode zu verwenden, immer habe ich Sachen in Browser zu senden. In diesem Fall war ich glücklich, zu sehen Ihre

InvokeMember("click") 

aber weiß nicht, warum Sie wissen, dass Sie schreiben „Klick“ haben da drin. Wie auch immer Danke

1

Ich bin ziemlich von http://stackoverflow.com profitiert. Ich war von Stunden für automatische Anmeldung wandern und von vb-Anwendung auf eine andere Website senden. Wegen der Hilfe dieser Seite bin ich in der Lage, meine Aufgabe zu vervollständigen

Ich muss mich anmelden, Web php Seite.

<HTML> 

<body> 
<div align="center"><img src="banner.png" height="80px" /></div> 
<script type="text/javascript"> 
$(document).ready(function(){ 
      $("#login").validate(); 
      $("#login_container").css({'position': 'absolute', 
       'top' : (($(window).height()/2) - $("#login_container").height()/2)+'px'}); 
      $("#login_container").css({'left' : (($(window).width()/2) - $("#login_container").width()/2)+'px'}); 
     }); 
    </script> 
    <div id="login_container"> 
     <form name="login" id="login" action="?q=login" method="post"> 
     <table> 
      <tr><td>Username</td><td><input type="text" name="name" class="required"/></td></tr> 
      <tr><td>Password</td><td><input type="password" name="password" class="required"/></td></tr> 
      <tr><td></td><td><input type="submit" name="subimt" value="Login" /></td></tr> 
     </table> 
     </form> 
    </div> 
</body> 
</html> 

Für automatische Anmeldung und klicken ich schrieb VB.Net Code. In form1 legte ich einen Knopf und ein WebBrowser-Steuerelement

Imports System.IO 
Imports System.Windows.Forms 



Public Class Form1 


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 


     WebBrowser1.Navigate("http://xyz.com") 



    End Sub 

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 
     WebBrowser1.Document.GetElementById("name").SetAttribute("Value", "bharatlal") 
     WebBrowser1.Document.GetElementById("password").SetAttribute("Value", "mahato") 
     WebBrowser1.Document.GetElementById("subimt").Focus() 
     WebBrowser1.Document.GetElementById("subimt").InvokeMember("click") 
    End Sub 
End Class 
0
Private Sub bt_continue_Click(sender As Object, e As EventArgs) Handles bt_continue.Click 
    wb_apple.Document.GetElementById("phoneNumber").Focus() 
    wb_apple.Document.GetElementById("phoneNumber").InnerText = tb_phonenumber.Text 
    wb_apple.Document.GetElementById("reservationCode").Focus() 
    wb_apple.Document.GetElementById("reservationCode").InnerText = tb_regcode.Text 
    'SendKeys.Send("{Tab}{Tab}{Tab}") 
    'For Each Element As HtmlElement In wb_apple.Document.GetElementsByTagName("a") 
    'If Element.OuterHtml.Contains("iReserve.sms.submitButtonLabel") Then 
    'Element.InvokeMember("click") 
    'Exit For 
    ' End If 
    'Next Element 
    wb_apple.Document.GetElementById("smsPageForm").Focus() 
    wb_apple.Document.GetElementById("smsPageForm").InvokeMember("submit") 

End Sub 
0

Nur zwei Schritte folgen, um eine beliebige Taste mit dem Code klicken.

  1. Fokus auf die Schaltfläche oder ein Element, das Sie

    WebBrowser1.Document.GetElementById("place id here").Focus()

  2. Simulieren Mausklick mit diesen folgenden Code

    SendKeys.Send("{ENTER}")

klicken möchten