2008-10-16 8 views
7

J'ai une page html ouverte sur mon objet webbrowser, je peux entrer le nom d'utilisateur et le mot de passe, mais je suis coincé et je ne sais pas comment soumettre l'info. Voici le code html pour le nom d'utilisateur/mot de passe soumettre:VB.NET - Cliquez sur le bouton Envoyer sur la page Webbrowser

<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> 

J'utilise ce qui suit pour entrer le nom d'utilisateur et mot de passe:

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

Que dois-je utiliser pour soumettre les informations maintenant? J'ai essayé d'obtenir l'élément par son nom et j'ai continué à obtenir l'erreur d'index, l'index devrait être -1 ou 0, mais c'était le cas.

Votre aide serait grandement appéciée !!

Répondre

0

Vous pouvez essayer de donner un ID au formulaire, afin de le récupérer, puis appeler form.submit() à partir d'un appel Javascript.

1

Cela semble fonctionner facilement.


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

qui est ma solution pour quelque chose de similaire à ce problème.

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

j'ai cherché une solution à ne pas utiliser le « SendKeys(CHR(13)) » Methode jamais je l'habitude de présenter des choses dans le navigateur. Dans ce cas, je suis heureux de voir votre

InvokeMember("click") 

mais ne sais pas pourquoi vous savez que vous devez écrire « cliquez sur » là-dedans. En tout cas Merci

1

Je suis assez bénéficié avec http://stackoverflow.com. Je me promenais des heures pour la connexion automatique et soumettre de l'application de vb à un autre site Web. Grâce à l'aide de ce site, je suis en mesure d'accomplir ma tâche

Je dois me connecter à la page web php.

<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> 

Pour la connexion automatique et en cliquant sur J'ai écrit suivant le code VB.Net. En form1 j'ai placé un bouton et un contrôle WebBrowser

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

Il suffit de suivre deux étapes pour cliquer sur un bouton tout en utilisant le code.

  1. accent sur le bouton ou l'élément que vous voulez cliquer

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

  2. simulent un clic de souris à l'aide de ce code suivant

    SendKeys.Send("{ENTER}")

Questions connexes