elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  obtener dato de controles en paginas web con vb.net
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: obtener dato de controles en paginas web con vb.net  (Leído 3,738 veces)
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
obtener dato de controles en paginas web con vb.net
« en: 3 Junio 2017, 06:47 am »

estoy intentando completar los datos de una página web por medio de webBrowser, no tengo idea de este lenguaje,salvo lo básico(siempre lo hago con python), así que busqué en la red, el problema es que lo que encontré es acceso por medio del id y resulta que la página que miro el textbox tiene:
Código
  1. <input onkeydown="checkKeyDown(event.keyCode)" name="textfield">
  2.  
nada de id!!! ¿cómo obtengo acceso a completar o leer ese control?
de paso, perdón por la ignorancia ¿de dónde se obtiene información sobre las propiedades de los controles?


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: obtener dato de controles en paginas web con vb.net
« Respuesta #1 en: 3 Junio 2017, 21:00 pm »

Disculpa el atrevimiento compañero pero yo intuyo que no te debe ser muy satisfactorio usar VB.NET, me refiero, ¿no te sería de mayor utilidad usar C# por las similitudes sintácticas con Python?.



Por lo que creo haber entendido, estás intentando rellenar los datos de un formulario web de forma "visual" y automatizada mediante el control WebBrowser y no encuentras un identificador que te sirva para identificar un control en específico. Pues bien, en teoría deberías poder utilizar el valor del atributo "name" como identificador (es decir, el string "textfield" en el código que mostraste).

Te muestro un ejemplo completo con la página de login de http://foro.elhacker.net :

Código
  1. ...
  2. </tr><tr class="windowbg">
  3. <td width="50%" align="right"><b>Usuario:</b></td>
  4. <td><input type="text" name="user" size="20" value=""/></td>
  5. </tr><tr class="windowbg">
  6. <td align="right"><b>Contrase&ntilde;a:</b></td>
  7. <td><input type="password" name="passwrd" value="" size="20"/></td>
  8. ...

Código
  1. Public NotInheritable Class Form1 : Inherits Form
  2.  
  3.    Private ReadOnly uri As New Uri("http://foro.elhacker.net/login.html")
  4.  
  5.    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  6.        Me.WebBrowser1.Navigate(uri)
  7.    End Sub
  8.  
  9.    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  10.  
  11.        Dim wb As WebBrowser = DirectCast(sender, WebBrowser)
  12.  
  13.        If (wb.Document.Forms.Count = 0) OrElse (wb.Url <> Me.uri) Then
  14.            Exit Sub
  15.        End If
  16.  
  17.        Dim doc As HtmlDocument = wb.Document
  18.        Dim form As HtmlElement = doc.Forms(0)
  19.        Dim user As HtmlElement = doc.GetElementById("user")
  20.        Dim passwrd As HtmlElement = doc.GetElementById("passwrd")
  21.  
  22.        user?.SetAttribute("value", "My Username")
  23.        passwrd?.SetAttribute("value", "My Password")
  24.        form.InvokeMember("Submit")
  25.  
  26.    End Sub
  27.  
  28. End Class

Y para obtener el valor de un attributo puedes hacerlo de la siguiente manera siguiendo el ejemplo de arriba:

Código
  1. Dim attribSize As String = user.GetAttribute("size") ' 20
  2. Dim attribType As String = user.GetAttribute("type") ' text

Si quieres algo más sofisticado a la hora de parsear, entonces es MUY recomendable utilizar la librería de terceros HtmlAgilityPack para .NET.
...O en su defecto puedes importar la librería MSHTML y usar sus interfaces (las clases System.Windows.Forms.HtmlDocument / HtmlDomDocument / HtmlElement y etcétera son wrappers de los miembros/interfaces expuestos en MSHTML) pero estos miembros no están muy documentados en la referencia online de la MSDN, así que dependiendo de para qué, sería un poco ir a ciegas.

Saludos!


« Última modificación: 4 Junio 2017, 06:53 am por Eleкtro » En línea



tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: obtener dato de controles en paginas web con vb.net
« Respuesta #2 en: 4 Junio 2017, 01:29 am »

Elektro:
             Muchas Gracias por responder! ya probaré lo que has enseñado! en cuanto al lenguaje por la sintaxis, tampoco es tanto problema ya que basicamente es parecida a vb 6 que si he usado más, prefiero aprendar más de vb.net por ahora, c y c++ lo uso solo para simples programas sin entorno visual para que pesen poco.
Nuevamente gracias por desburrarme!
Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
obtener un dato concreto de una web html a un textbox de visual basic 6
Programación Visual Basic
jarping 2 2,166 Último mensaje 13 Junio 2006, 12:19 pm
por jarping
{SOLUCIONADO} no consigo obtener dato con _GET
PHP
|Miguel| 4 2,753 Último mensaje 9 Abril 2012, 10:58 am
por |Miguel|
Obtener un dato de internet con java.
Java
Coke951 2 1,926 Último mensaje 2 Mayo 2015, 23:44 pm
por ocducs
duda de obtener dato de un jtable
Java
rey45 2 1,705 Último mensaje 21 Febrero 2016, 05:29 am
por rey45
Como puedo obtener datos x dato de php a .net
.NET (C#, VB.NET, ASP)
SrTrp 1 2,705 Último mensaje 5 Septiembre 2017, 04:03 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines