webbrowser form control chrome vb.net input browser

vb.net - form - webbrowser properties



VB.NET: haga clic en el botón Enviar en la página Webbrowser (8)

Podría tratar de dar una identificación al formulario, para obtenerlo, y luego llamar a form.submit () desde una llamada de Javascript.

Tengo una página html abierta en mi objeto webbrowser, puedo ingresar bien el nombre de usuario y la contraseña, pero estoy atascado y no sé cómo enviar la información. Aquí está el código html para el envío del nombre de usuario / contraseña:

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

Utilizo lo siguiente para ingresar el nombre de usuario y la contraseña:

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

¿Qué debería usar para enviar la información ahora? Intenté obtener el elemento por nombre y seguí obteniendo el índice fuera del rango de error, el índice debería ser -1 o 0, pero así fue.

¡Su ayuda sería muy útil!


Esto parece funcionar fácilmente.

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


Busqué cualquier solución para no usar el método " SendKeys(CHR(13)) " que solía enviar cosas en el navegador. En este caso, estaba feliz de ver tu

InvokeMember("click")

pero no sé por qué sabes que tienes que escribir "clic" allí. Gracias de todos modos


esa es mi solución para algo similar a este problema.

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); }


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


Estoy bastante beneficiado con http://.com . Estaba deambulando de horas para iniciar sesión automáticamente y enviar desde la aplicación vb a otro sitio web. Debido a la ayuda de este sitio, puedo completar mi tarea

Tengo que iniciar sesión siguiendo la página 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>

Para iniciar sesión automáticamente y hacer clic, escribí el siguiente código de VB.Net. En form1 coloqué un botón y un control 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


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


Simplemente siga dos pasos para hacer clic en cualquier botón usando el código.

  1. enfoca el botón o elemento en el que deseas hacer clic

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

  2. simular clic del mouse usando este código siguiente

    SendKeys.Send("{ENTER}")