Jump to content
programadorvb6

Como enviar dados para páginas Web

Recommended Posts

programadorvb6

Olá bom dia.

Tenho um problema com este código e não sei como o resolver, estou a tentar preencher de forma automática os campos User e password em páginas web e não consigo fazer o 'transporte' de dados.

Public Class KeyKeeper

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Navigate("http://www.montargilforum.com/ncforum/forumdisplay.php?f=44")
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        WebBrowser1.Document.GetElementById("text").SetAttribute("value", TextBox1.Text)
        WebBrowser1.Document.GetElementById("password").SetAttribute("value", TextBox2.Text)
        WebBrowser1.Document.GetElementById(".save").InvokeMember("click")

    End Sub

    Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.CheckState = 0 Then
            TextBox2.UseSystemPasswordChar = True
        End If
        If CheckBox1.CheckState = 1 Then
            TextBox2.UseSystemPasswordChar = False
        End If
       
    End Sub
End Class

Obrigado desde já pela vossa atenção.

Programadorvb6

Share this post


Link to post
Share on other sites
bioshock

É normal que tenhas um problema com esse código pois não estás a chamar correctamente os elementos.

Heis a página de HTML do gmail:

username:

<input type="text" name="Email" id="Email" size="18" value="" class="gaia le val">

password:

<input type="password" name="Passwd" id="Passwd" size="18" class="gaia le val">

button iniciar sessão:

<input type="submit" class="gaia le button" name="signIn" id="signIn" value="Iniciar sessão">

Portanto, terias algo do género:

WebBrowser1.Document.GetElementById("Email").SetAttribute("value", Textbox1.Text)
WebBrowser1.Document.GetElementById("Passwd").SetAttribute("value", Textbox2.Text)
WebBrowser1.Document.GetElementById("signIn").InvokeMember("click")

Vê lá se a partir do exemplo que te dei, consegues transcrever isso para a tua página :)

Share this post


Link to post
Share on other sites
Away

Podes dizer qual é o erro que ocorre?


Msgbox("I Help if i can, Hope some day you help me too!")

Share this post


Link to post
Share on other sites
bioshock

Podes dizer qual é o erro que ocorre?

Para perceber o erro que lhe ocorre tens de ver o código html presente na página que ele indicou.

Por aí, perceberás que ele está apanhar os input types e não os id's dos controlos.

Share this post


Link to post
Share on other sites
Away

Pois =)

Troca isto:

   WebBrowser1.Document.GetElementById("text").SetAttribute("value", TextBox1.Text)
        WebBrowser1.Document.GetElementById("password").SetAttribute("value", TextBox2.Text)
        WebBrowser1.Document.GetElementById(".save").InvokeMember("click")

Por:

   WebBrowser1.Document.GetElementById("navbar_username").SetAttribute("value", TextBox1.Text)
        WebBrowser1.Document.GetElementById("navbar_password").SetAttribute("value", TextBox2.Text)
   WebBrowser1.Document.GetElementById("navbar_password").Focus ' Porque o butão nao tem ID por isso "FóCO" nele
  SendKeys.Send("{Enter}")  ' E "Clicko Enter"
        

Se usas o google chrome basta clickar com o butao direito do rato em cima da text area (butao, etc.. ) e clicar "Inspecionar Elemento" , e ai verás o ID, Type , Value etc..

=)


Msgbox("I Help if i can, Hope some day you help me too!")

Share this post


Link to post
Share on other sites
bioshock

Fornecer a papinha toda não é o melhor método para se ensinar alguém :confused:

Share this post


Link to post
Share on other sites
Away

Não sou bom proff XD

Ele só tem que Entender:

"GetElementByID" = Pegar Elemento Pelo ID

Portanto tens que pegar o "ID" (Ex: <button id="XD"> , .....GetElementById("XD").....)


Msgbox("I Help if i can, Hope some day you help me too!")

Share this post


Link to post
Share on other sites
programadorvb6

Olá Pessoal.

Obrigado desde já pela vossa ajuda.

Ainda sei pouco disto, em VB6 a 'papinha' já estava na mesa.. LOL!

Pelas vossas indicações também cheguei lá(Obrigado!), contudo reparei que os mesmos ID não servem para todos os sites..

Não há maneira de se poder uniformizar para que se consiga introduzir os valores para todas as páginas?

Grato pela vossa ajuda.

Programadorvb6

Share this post


Link to post
Share on other sites
Away

Não sei se percebi, Mas cada butão, textarea div etc.. Pode ter o seu proprio ID por isso só mesmo 1 por 1, Não ah forma de "uniformizar"..


Msgbox("I Help if i can, Hope some day you help me too!")

Share this post


Link to post
Share on other sites
programadorvb6

Só se fizer uma rotina em que a mesma irá checar vários ID, para se poder uniformizar para todas as páginas.

Share this post


Link to post
Share on other sites
programadorvb6

Olá + 1 vez.

Fiz um pouco diferente, talvez seja melhor para o que quero, mas tenho que implementar muitos if .. then..  o que torna o código menos elegante..

Como poderei fazer para substituir os < If > por:  <select case > ? :

    Dim elm As Object
        'WebBrowser1.Document.GetElementById("navbar_username").SetAttribute("value", TextBox1.Text)
        'WebBrowser1.Document.GetElementById("navbar_password").SetAttribute("value", TextBox2.Text)
        'WebBrowser1.Document.GetElementById("navbar_password").Focus()
        'SendKeys.Send("{Enter}")  ' E "Clicko Enter"

        Try

            For i As Integer = 0 To WebBrowser1.Document.All.Count - 1
                elm = WebBrowser1.Document.All.Item(i)

                If Not elm.TagName Is Nothing Then
                    If CType(elm, System.Windows.Forms.HtmlElement).Name = "vb_login_username" Then 'Capta User ID 
                        CType(elm, System.Windows.Forms.HtmlElement).InnerText = "login"
                    ElseIf CType(elm, System.Windows.Forms.HtmlElement).Name = "vb_login_password" Then 'Capta Password ID
                        CType(elm, System.Windows.Forms.HtmlElement).InnerText = "pass"
                        CType(elm, System.Windows.Forms.HtmlElement).Focus()
                        SendKeys.SendWait(Chr(13))
                    End If
                End If
            Next

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

Grato desde já pela vossa atenção

Uma vez + obrigado.

Atentamente

Programadorvb6

Share this post


Link to post
Share on other sites
bioshock

Qual é o problema com os IF's? Estão bem encadeados.

Aliás, só podes fazer um Select Case desta linha de código:

CType(elm, System.Windows.Forms.HtmlElement).Name

Share this post


Link to post
Share on other sites
programadorvb6

Ok.

Já entendi.

Ficará assim :

Select Case CType(elm, System.Windows.Forms.HtmlElement).Name
                     Case "vb_login_username"
                            CType(elm, System.Windows.Forms.HtmlElement).InnerText = "User"
                     Case "vb_login_password"
                            CType(elm, System.Windows.Forms.HtmlElement).InnerText = "Pass"
                            CType(elm, System.Windows.Forms.HtmlElement).Focus()
                            SendKeys.SendWait(Chr(13))
             End Select

Obrigado!

Share this post


Link to post
Share on other sites
programadorvb6

Tenho este código em html e precisava de saber como posso contar em quantas linhas tem : < li > .. </li> ?

<div id="content">
<ol start="1751">
<li>Zona Desportiva de Montargil</li>
<li>Feliz Ano Novo</li>
<li>Delphi: um ano após fecho das portas em Ponte de Sôr!</li>
<li>Esperemos que não seja um mau presságio</li>
<li>Aniversário</li>
<li>Falecimento</li>
<li>Agradecimento</li>
<li>Secretário de Estado da Saúde preside à instalação de UCC’s na ULSNA.</li>
<li>EBI Montargil - Ambiente Positivo</li>
<li>Ciência e Novas Tecnologias - um novo Núcleo da Nova Cultura</li>
<li>Prates Miguel no "5 para a meia noite"</li>
</ol>
</div>

Share this post


Link to post
Share on other sites
bioshock

Se a tua questão anterior foi resolvida, dás o tópico como resolvido e crias outro tópico com essa tua nova dúvida.

Share this post


Link to post
Share on other sites
adriano jose santana
Em 23/03/2011 às 11:38, bioshock disse:

Se a tua questão anterior foi resolvida, dás o tópico como resolvido e crias outro tópico com essa tua nova dúvida.

Olá pessoal, gostaria de uma ajuda

Tentei os comandos para colocar usuario e senha, mas a senha sempre vem em branco, como posso fazer?

Estou usando VB6 e preciso usar isso na pagina do BoaVista

wPagina.Navigate "https://www.bvsnet.com.br/cgi-bin/db2www/NETPO101.mbr/loginSI"

  wPagina.Document.All("cd_usuario").focus
    wPagina.Document.All("cd_usuario").Value = "usuario"
    
    wPagina.Document.getElementById("cd_senha").focus
    wPagina.Document.getElementById("cd_senha").setAttribute "value", "senha"

 

Obrigado pela ajuda

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.