jueves, 13 de junio de 2013

Recorrer Controles y Forms de Página Web [En .NET]


Los controles, botones, textos, y todo el contenido de las páginas, a veces nos resulta útil acceder a ellos desde nuestro IDE, si bien VB.NET tiene el "nuevo" webbrowser, cuando hablamos de sencillez podemos decir que lo tradicional si está bien hecho, no se reemplaza.

En elegir elementos--> Componentes COM --> Microsoft WebBrowser(ieframe.dll)

Buscar determinado control en una pagina cargada en el Webbrowser puede resultar tedioso, y aún mas cuando desconocemos el nombre de formularios y demas, lo que nos lleva al viejo y querido clic derecho--> ver código fuente, revisar el que queremos y luego agregarlo a nuestra apicación para interactuar con el.

Esta es una forma generalizada de ver TODOS los forms y controles que contienen los mismos y podes cmparararlos para saber si es el que necesitamos sin necesidad de saber el código fuente.

Claro está que tenemos que tener algún argumento que nos indique el botón o texto, por ejemplo el "type" o bien "Value" para el contenido del control.

Luego de cargar en Form load el Browser con alguna web a través de un For recorremos TODO de la siguiente forma:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim x As Integer
For x = 0 To 2
    For i = 0 To WebBrowser1.Document.Forms(x).length - 1
        If WebBrowser1.Document.Forms(x)(i).Type = "submit" Then
           If WebBrowser1.Document.Forms(x)(i).Value = "Ver más" Then
              WebBrowser1.Document.Forms(x)(i).Click()
              Exit Sub
           End If
        End If
    Next i
Next x
End Sub


Entendemos que WebBrowser1 identifica al objeto browser.

-- WebBrowser1.Document.Forms(x).length - 1
'Entendemos que trata de la longitud de formularios menos uno ya que comienza en 0.

--WebBrowser1.Document.Forms(x)(i).Type = "submit"
'Cuando el tipo del control encontrado es "submit" (por ejemplo, un botón con esa propiedad)

--WebBrowser1.Document.Forms(x)(i).Value = "Ver más"
'Si es un boton luego verificamos que ese boton tenga como texto hacia el usuario el contenido "Ver más"

-- WebBrowser1.Document.Forms(x)(i).Click()
 'Aplicamos el clic a ese botón si es el que deseamos.


El for recorrerá TODOS los formularios y TODOS los controles que tengan estos.

Por lo que no hay necesidad de mas nada para interactuar con los mismos, dependiendo de las necesidades de cada uno.

Espero les sea útil,

Saludos.

No hay comentarios:

Publicar un comentario