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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Subir imagen con WebBrowser
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Subir imagen con WebBrowser  (Leído 10,492 veces)
okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Subir imagen con WebBrowser
« Respuesta #10 en: 19 Junio 2015, 23:02 pm »

Hola compañero

Mira no te complique más. Como no me rindo facilmente, finalmente encontré la solución  :P. Por lo menos para conseguir pulsar el botón. En cuanto a tu pregunta por lo del servidor, sinceramente no lo se.


Código
  1. Public Class Form1
  2.  
  3.  
  4.  
  5.    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  6.        WebBrowser1.ScriptErrorsSuppressed = True
  7.        WebBrowser1.Navigate("http://www2.yapo.cl/ai/form/7?ca=15_s")
  8.    End Sub
  9.  
  10.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  11.  
  12.        Dim clElement As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("Input")
  13.        For Each Element As HtmlElement In clElement
  14.            Dim controlName As String = Element.GetAttribute("input").ToString
  15.            If Element.GetAttribute("name").Equals("file") Then
  16.                Element.InvokeMember("click")
  17.            End If
  18.        Next
  19.    End Sub
  20. End Class



Explico como lo he averiguado.

Se me ocurrió que era mejor guardar la página web y luego analizarla. Tras guardarla la he abierto con el vb.net como web y justo donde está el botón hay controles uno encima de otro. Los separé, y conseguí determinar realmente cual es el control a llamar. Para ello guardé los cambios y luego lo abrí con el Google Chrome sin conexión  para determinar cual era realmente el que abre el cuadro. No es visible pero se detecta al pasar el ratón porque se pone el dedo. Después le doy con el botón derecho del ratón y hago clic en Inspeccionar y Chrome me muestra el código exácto que hace referencia al mismo.

Código
  1. <input multiple="multiple" type="file" name="file" style="height: 46px; position: absolute; right: 18px; top: 50px; font-family: Arial; font-size: 118px; margin: 0px; padding: 0px; cursor: pointer; opacity: 0; width: 1925px;">


No encontraba el control porque no es visible desde el webbrowser al obtener el código de la página al conectarse online. Si no ubiera guardado la página para analizarla no lo hubiera encontrado.

El control se crea desde un archivo de jscript que se descarga en el caché que se llama ai.js:

Código
  1. e=document.createElement("input");this._options.multiple&&e.setAttribute("multiple","multiple"),this._options.acceptFiles&&e.setAttribute









« Última modificación: 20 Junio 2015, 00:17 am por okik » En línea

Darkwizz

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Subir imagen con WebBrowser
« Respuesta #11 en: 20 Junio 2015, 18:49 pm »

Genial, eres un maestro!. Al fin una forma de hacerlo, me salvaste.

La última duda que me queda es que trabajando con WebBrowrser no funciona si dentro del mismo botón cargo la página y luego trato de pulsar botones dentro de esta página, es obligatorio que se cargue antes para poder usar el botón. Mi duda es si existe alguna forma de hacerlo o no?, porque intenté con ciclos for y tampoco funciona, pero es una acotación nomas, el problema principal ya está solucionado y te agradezco por la amabilidad y el tiempo que te tomaste. Saludos


En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Subir imagen con WebBrowser
« Respuesta #12 en: 20 Junio 2015, 22:14 pm »

Que tal esto:

Código
  1. Public Class Form1
  2.    Dim WB As New WebBrowser
  3.  
  4.    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  5.        Button1.Text = "Cargar página"
  6.        Button2.Text = "Upload Image"
  7.        Button2.Enabled = False
  8.    End Sub
  9.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  10.        WB.ScriptErrorsSuppressed = True
  11.        Try
  12.            WB.Navigate("http://www2.yapo.cl/ai/form/7?ca=15_s")
  13.            Me.Cursor = Cursors.WaitCursor 'Cambia el cursor a espera
  14.  
  15.            'Espera a que cargue la página
  16.            Do While (WB.ReadyState <> WebBrowserReadyState.Complete)
  17.                My.Application.DoEvents()
  18.            Loop
  19.  
  20.            If WB.ReadyState = WebBrowserReadyState.Complete Then
  21.                Me.Cursor = Cursors.Default 'Retorna el cursor normal
  22.                Button2.Enabled = True
  23.            End If
  24.        Catch ex As Exception
  25.            MsgBox("No se ha podido gargar la página")
  26.        End Try
  27.  
  28.    End Sub
  29.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  30.        Dim clElement As HtmlElementCollection = WB.Document.GetElementsByTagName("Input")
  31.        For Each Element As HtmlElement In clElement
  32.            Dim controlName As String = Element.GetAttribute("input").ToString
  33.            If Element.GetAttribute("name").Equals("file") Then
  34.                Element.InvokeMember("click")
  35.            End If
  36.        Next
  37.    End Sub
  38. End Class

No me acaba de gustar porque si metes mal la URL el segundo botón se activa igualmente, pero por ahí va la cosa. Crear un sistema de espera a que se cargue la página.

Por cierto, para este código NO necesistas introducir físicamente un WebBrowser en el formulario, gracias a :        Dim WB As New WebBrowser


De modo que puedes introducir datos y hacer clics a botones sin que se vea la página.




En línea

Darkwizz

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Subir imagen con WebBrowser
« Respuesta #13 en: 25 Junio 2015, 23:16 pm »

Hola compañero, de nuevo yo jajaja, mientras seguía viendo la página encontré, que cuando subes un producto, este queda en estado de espera, y no puedo lograr identificar si un producto está en revisión. Tu crees que sea posible alguna forma?
En línea

nomed

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Subir imagen con WebBrowser
« Respuesta #14 en: 9 Junio 2017, 15:06 pm »

Que bueno , estaba buscando esto , voy a ver paso a paso si soy capaz de conseguirlo, gracias fenomeno
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Determinar si una imagen se cargo en un webbrowser « 1 2 »
Programación Visual Basic
rubeng 10 6,833 Último mensaje 23 Abril 2014, 14:56 pm
por abkanis
Capturar URL de imagen desde Webbrowser
.NET (C#, VB.NET, ASP)
Rosen 1 5,295 Último mensaje 19 Octubre 2009, 21:57 pm
por MANULOMM
Clickar imagen WebBrowser de C#
.NET (C#, VB.NET, ASP)
¨°o.O (ßa¢Kg|姧) O.o° 4 5,419 Último mensaje 11 Enero 2010, 14:27 pm
por raul338
[DUDA] cURL subir imagen
PHP
Shell Root 3 2,779 Último mensaje 9 Septiembre 2015, 19:42 pm
por MinusFour
[Pregunta]: Progress bar o preloader al subir una imagen
Desarrollo Web
Leguim 0 1,516 Último mensaje 22 Agosto 2019, 16:33 pm
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines