Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: oskarrr en 11 Septiembre 2012, 16:47 pm



Título: Pasar datos a web con webbrowser en tiempo de ejecución (no hay manera)
Publicado por: oskarrr en 11 Septiembre 2012, 16:47 pm
Hola. Aprovecho para presentarme aunque llevos unos añitos registrado. Quiero rellenar unos campos en tiempo de ejecución en una web, concretamente usuario, password, y darle clic al login. El clic al login y el campo de password me funcionan bien, pero al intentarle meter texto al campo login me da el error 438 de que no admite ese método o propiedad. Yo pienso que es porque el form (de la web) se llama login y el input text de la web también se llama login.

Este es el código html (resumido):

Código:
<form method="post" action="login.phtml" name="login" style="display:inline"><div style="float:left;">
<div style="float:left;">
<div style="float:left;line-height:8px;"><div class="icon mi mi_manager" style="float:left;"></div><p style="float:left;margin:0;padding:0;line-height:8px;padding-top:1px;">Usuario:&nbsp;</p><br /></div>
                                <div style="float:left;">
                                <input type="text" name="login" size="10" maxlength="10" class="userlogin" tabindex="1" style="margin-left:5px;margin-top:4px;" />
                                </div>
</div>
<div style="float:left;">
<div style="float:left;line-height:8px;"><div class="icon i_lock" style="float:left; margin-left:5px; margin-right:4px;"></div><p style="float:left;margin:0;padding:0;line-height:10px;padding-top:1px;">Contraseña:&nbsp;</p><br /></div>
                                <div style="float:left;">
                                <input type="password" name="pass" size="10" maxlength="8" style="width:80px;margin-left:5px;margin-top:4px;" tabindex="2" onkeypress="checkEnter(event, 'login')" class="userlogin" />
                                </div>
       </div><input type="hidden" name="action" value="login" />

Y este es mi código en VB6:

Código:
Private Sub Form_Load()
    WebBrowser1.Navigate "http://miweb.com/login"
End Sub

Private Sub Command1_Click()
    WebBrowser1.Document.All("login").Value = "pepito" 'aquí falla
    WebBrowser1.Document.All("pass").Value = "12345" 'funciona ok
    WebBrowser1.Document.parentWindow.execScript "submitForm('login','Login')", "javascript" 'funciona ok
End Sub


Título: Re: Pasar datos a web con webbrowser en tiempo de ejecución (no hay manera)
Publicado por: seba123neo en 11 Septiembre 2012, 17:15 pm
lo que veo mal, es que el textbox se llama "login" y el formulario contenedor tambien se llama "login", entonces como estas usando el .All y hay 2 objetos con el mismo nombre, te debe estra trayendo el formulario en ves del textbox, por eso no funciona, deberias no usar el .All en este caso y especificarle el nombre del formulario, algo asi:


Código
  1. WebBrowser1.Document.login.login.Value = "pepito"

el primer login especifica el nombre del formulario que lo contiene y el segundo es el nombre del textbox, proba de esa forma haber que pasa.

saludos.