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 »"
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.
enfoca el botón o elemento en el que deseas hacer clic
WebBrowser1.Document.GetElementById("place id here").Focus()
simular clic del mouse usando este código siguiente
SendKeys.Send("{ENTER}")