If you inspect the element, you'll notice that the fields you want to edit are within iframe
, whose source is /proc/sistema_push/
. Therefore, to reference the email and password fields, you must first reference iframe
. To fetch the iframe, we will iterate the page iframes, and compare the URL. Note that the src
attribute contains a relative path, but the value returned by the URL
attribute of the iframe
is absolute, so we'll add the domain of the Court site in the comparison term.
I'm just adding a variable (Cont) and a for
statement block.
Come on:
Sub MacacoLoko()
Dim IE As InternetExplorer
Dim docHTML As HTMLDocument
Dim Ulogin As Boolean, ieForm
Dim NumProc As String: NumProc = Me.ComarcaProcesso
Dim Email As String: Email = "[email protected]"
Dim Senha As String: Senha = "123456"
Dim Cont As Variant 'Vai ser o marcador para iterar as iframes em busca da correta (embora esse site só tenha uma, outros sites de tribunais podem ter mais, ou o site pode ser reformulado)
Set IE = New InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
'Abre o IE maximizado.
IE.Visible = True
IE.navigate "http://www.tjrs.jus.br/site/processos/tjrs_push/"
apiShowWindow IE.Hwnd, SW_MAXIMIZE
'Espera até que a página esteja totalmente carregada.
Do Until IE.readyState = READYSTATE_COMPLETE
Loop
'Itera as iframes, buscando a correta (no nosso caso, procuraremos pelo atributo "src" da tag "iframe".
For Each Cont In IE.Document.getElementsByTagName("iframe")
If Cont.src = "http://www.tjrs.jus.br/proc/sistema_push/" Then Set docHTML = Cont 'Atribuímos docHTML à iframe correta. Importante: O atributo "src" no HTML da página está em caminho relativo, mas a URL da frame tem que ser buscada com a URL completa.
Next Cont
'Nessa parte você deve conhecer a propriedade "name" dos elementos input do site que irá logar.
docHTML.all("email").innerText = Email
docHTML.all("senha").innerText = Senha
'Nessa parte você deve informar o nome (propriedade name) do formulário a ser submetido.
IE.Document.all("login").Click
'Daqui pra frente eu não testei; talvez seja necessário reatribuir o "dochtml", caso o número do processo esteja dentro de outra iframe, mas você já entendeu como se faz isso.
Do
'Coloca o nome do campo usuário do form na página.
IE.Document.all("input_num_themis").innerText = NumProc
DoCmd.GoToRecord , , acNext
Loop
End Sub