Jump to content

Recommended Posts

Posted

Boa tarde a todos, estou iniciando novo projecto, mas estou com dificuldade em fazer que o programa faça isto:

1º Visitar website,encontrar ID element, ou name ou letra e clicar de imediato !

Resumindo é

Estou a tentar fazer assim, mas ele visita o www.facebook.com e não clica em LOGIN

nao entendo!

alguem ajuda?

Imports System.IO
Imports System.Windows.Forms
Imports System.Windows.Forms.WebBrowserDocumentCompletedEventArgs


Public Class Form1

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       WebBrowser1.Navigate("http://login.facebook.com/login.php")
   End Sub


   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       WebBrowser1.Navigate("www.facebook.com")

       Dim allelements As HtmlElementCollection = WebBrowser1.document.All

       For Each webpageelement As HtmlElement In allelements

           If webpageelement.GetAttribute("value") = "Log In" Then

               webpageelement.InvokeMember("click")

           End If

       Next
   End Sub

End Class
Posted

Olá RicardoVVV,

Perguntaste a um sábado, uma questão que já foi respondida várias vezes. Tens de ter calma 🙂

Não encontra o elemento porque no momento em que o estás a procurar, ele não existe.

Estás a percorrer os elementos imediatamente após o navigate e a menos que tenhas uma ligação à Internet mais rápida do que o escalonador do processador, não vais ter o botão login no DOM.

Basta que passes a lógica de pesquisa para uma altura mais adequada como por exemplo, quando o DOM estiver completo.

Felizmente, o WebBrowser dispara um evento quando isso acontece: DocumentCompleted.

Ora verifica:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       WebBrowser1.Navigate("www.facebook.com")
   End Sub

   Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
       Dim allelements As HtmlElementCollection = WebBrowser1.document.All

       For Each webpageelement As HtmlElement In allelements
           If webpageelement.GetAttribute("value") = "Log In" Then
               webpageelement.InvokeMember("click")

           End If

       Next
   End Sub

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

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.