CLICAR BOTAO WEBBROWSER

ALTAIR148 24/01/2013 11:29:41
#417988
Bom dia,

Pessoal é o seguinte, eu estou tentando clicar em um botão que está em um webbrowser mas não estou conseguindo de forma alguma, esse é o site, e eu precisava clicar no botão Buscar Processo abaixo o código que estou tentando.

Dim Elems As HtmlElementCollection
Dim WebOC As WebBrowser = WebBrowser1
Elems = WebOC.Document.GetElementsByTagName([Ô]div[Ô])
For Each elem As HtmlElement In Elems
If elem.InnerHtml <> Nothing Then
Dim StringElemento As String = elem.InnerHtml
If StringElemento.StartsWith([Ô]<INPUT style=[Ô]) Then
elem.InvokeMember([Ô]click[Ô])
End If
End If
Next



Obrigado.
FROSTYNHO 24/01/2013 12:22:25
#417995
posta o link da pagina que você ta tentando
ALTAIR148 24/01/2013 13:18:53
#417999
ele foi postado. Basta clicar na palavra esse é o site colocado no primeiro post. Mas de qualquer forma segue o link novamente.

http://assejepar.com.br/v2/
EDULOCO 24/01/2013 13:19:02
#418000
ALTAIR olhando pelo fonte :

<input type=[Ô]image[Ô] src=[Ô]/v2/images/btn_buscar_processo.png[Ô] alt=[Ô]Buscar Processo[Ô] />

eu tentei da seguinte maneira:


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim theElementCollection As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName([Ô]input[Ô])
For Each curElement As HtmlElement In theElementCollection
If curElement.GetAttribute([Ô]src[Ô]).Contains([Ô]v2/images/btn_buscar_processo.png[Ô]) Then
curElement.InvokeMember([Ô]click[Ô])
End If

Next
End Sub


O problema é que ele está pegando os dois campos Buscar Processos que existe, ja tentei filtrar de outras maneiras e mesmo assim ele pega os dois, se colocar dessas maneiras:


If curElement.GetAttribute([Ô]src[Ô]) = [Ô]v2/images/btn_buscar_processo.png[Ô] Then [ô] Não funciona
If curElement.GetAttribute([Ô]alt[Ô]) = [Ô]Buscar Processos[Ô] Then [ô] Pega todos os botões do site já que o designer colocou todos os [Ô]alts[Ô] com o mesmo nome :s


Eu vou continuar tentando qualquer novidade te posto, quem poderia te ajudar bem era o Pegudo, se tem um cara que manja de webbrowser é ele kkkkk mas vamos continuar :D
ALTAIR148 24/01/2013 13:37:43
#418002
Seguindo o seu exemplo fiz de uma forma aqui que vai clicar apenas no segundo botão, não sei se é a melhor forma, se conseguires algo ai também ai testo das duas formas.

 Dim ContaBotao As Integer = 0
Dim theElementCollection As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName([Ô]input[Ô])
For Each curElement As HtmlElement In theElementCollection
If curElement.GetAttribute([Ô]src[Ô]).Contains([Ô]v2/images/btn_buscar_processo.png[Ô]) Then
If ContaBotao = 1 Then
curElement.InvokeMember([Ô]click[Ô])
Else
ContaBotao += 1
End If
End If

Next


Muito obrigado.
PEGUDO 24/01/2013 16:05:31
#418024
Cara,
Pode ter um jeito mais fácil, mas como estou quase de saída daqui do escritório, eu fiz o trivial mesmo.
Veja se te ajuda:



Ah, esqueci de [Ô]zerar[Ô] as variáveis no final.
é só colocar:
Divs = Nothing
Inputs = Nothing
Clique = Nothing

Abraços
OCELOT 24/01/2013 17:19:40
#418034
Resposta escolhida
Pelo que vi no site você não precisa exatamente fazer o clique no botão, que é um input com type=image, como ele não tem um name então provavelmente o botão é usado apenas para fazer o submit, o que você pode fazer é ao invés procurar pelo elemento do botão é simplesmente efetuar o submit do form correspondente, no caso me parece ser o de pesquisa por numeração única, se você inspecionar o html vai ver que o elemento form dele tem o class=[Ô]pesquisa_numerica[Ô], então é só procurar por ele, pode ser feito assim por exemplo:

    Dim form = (From f As HtmlElement In WebBrowser1.Document.Forms Where f.GetAttribute([Ô]className[Ô]) = [Ô]pesquisa_numerica[Ô] Select f).SingleOrDefault()
If form IsNot Nothing Then
form.InvokeMember([Ô]submit[Ô])
End If
Tópico encerrado , respostas não são mais permitidas