Vídeo recomendado
https://youtu.be/diWPPPhW-9E

[RESOLVIDO] CANNOT FOCUS ELEMENT PARA SENHAS

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
eletr1c0
Colaborador
Colaborador
Mensagens: 15
Registrado em: Seg Mai 28, 2018 3:06 am

[RESOLVIDO] CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por eletr1c0 »

Olá, primeiramente obrigado por todo o conteúdo que todos aqui disponibilizam para área de WebScraping.

Gostaria de uma pequena ajuda, se possível.

Quando tento fazer login nos sites que preciso extrair informação, encontro problemas na hora de inserir a senha, estou utilizando o VBA com Selenium.

Meu código para tentar acessar o site da CPFL, por exemplo, é:

Public driver As Selenium.WebDriver
Public Sub LogaHardmob()
Dim user, pass, uc, cliques As WebElement
Set driver = New ChromeDriver
driver.Get "https://www.cpflempresas.com.br"
Set user = driver.FindElementById("ctl00_ContentPlaceHolder1_loginmenu1_txtUSUARIO").SendKeys("987654321")
Set passwd = driver.FindElementByXPath("//*[@id=""ctl00_ContentPlaceHolder1_loginmenu1_txtSENHATXT""]").SendKeys("123456")
Set uc = driver.FindElementById("ctl00_ContentPlaceHolder1_loginmenu1_txtINSTALACAO").SendKeys("23")
Set cliques = driver.FindElementById("ctl00_ContentPlaceHolder1_loginmenu1_btnLOGIN")
cliques.Click
End Sub

E o erro que dá quando ele tenta colocar o password, é "CANNOT FOCUS ELEMENT". O mesmo erro dá quando tento colocar senha no forum do HardMob por exemplo.

Se alguém puder me dar um retorno, agradeço.
Editado pela última vez por eletr1c0 em Qui Jun 07, 2018 8:16 am, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Nill2016
Colaborador
Colaborador
Mensagens: 32
Registrado em: Qua Mai 09, 2018 11:34 am

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por Nill2016 »

Veja se agora funciona:
Public driver As Selenium.WebDriver
Public Sub LogaHardmob()
Dim user, pass, uc, cliques As WebElement

Set driver = New ChromeDriver

driver.Get "https://www.cpflempresas.com.br"

Set user = driver.FindElementByXPath("//input[@id='ctl00_ContentPlaceHolder1_loginmenu1_txtUSUARIO']").SendKeys("987654321")
Set passwd = driver.FindElementByXPath("//input[@id='ctl00_ContentPlaceHolder1_loginmenu1_txtSENHATXT']").SendKeys("123456")
Set uc = driver.FindElementByXPath("//input[@id='ctl00_ContentPlaceHolder1_loginmenu1_txtINSTALACAO']").SendKeys("23")
Set cliques = driver.FindElementByXPath("//input[@id='ctl00_ContentPlaceHolder1_loginmenu1_btnLOGIN']")

cliques.Click

driver.Quit

End Sub


eletr1c0
Colaborador
Colaborador
Mensagens: 15
Registrado em: Seg Mai 28, 2018 3:06 am

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por eletr1c0 »

Fala Nil! Beleza? Valeu pela ajuda mano mas não funciona, continua a dar o mesmo problema segue print:
Imagem

Se alguém souber, me ajudará muito!


Nill2016
Colaborador
Colaborador
Mensagens: 32
Registrado em: Qua Mai 09, 2018 11:34 am

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por Nill2016 »

Eu acho que esta tendo variação do elemento. Fiz um teste e deu erro, peguei outra tipo de XPath e deu certo. Deixei as duas opções para que você teste e confirmar se funciona.

Public Sub LogaHardmob()
Dim user, pass, uc, cliques As WebElement

Set driver = New FirefoxDriver

driver.Get "https://www.cpflempresas.com.br"

Set user = driver.FindElementByXPath("//form[@id='aspnetForm']/table/tbody/tr[5]/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr/td/input").SendKeys("987654321")
'Set passwd = driver.FindElementByXPath("//form[@id='aspnetForm']/table/tbody/tr[5]/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr[2]/td/input[2]").SendKeys("123456")
Set passwd = driver.FindElementByXPath("html/body/form/table/tbody/tr[5]/td/table/tbody/tr/td/table/tbody/tr[1]/td/table/tbody/tr[4]/td[1]/table/tbody/tr[2]/td/input[1]").SendKeys("123456")
Set uc = driver.FindElementByXPath("//form[@id='aspnetForm']/table/tbody/tr[5]/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr[3]/td/input").SendKeys("23")
Set cliques = driver.FindElementByXPath("//form[@id='aspnetForm']/table/tbody/tr[5]/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr[4]/td/input")

cliques.Click

driver.Quit

End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


eletr1c0
Colaborador
Colaborador
Mensagens: 15
Registrado em: Seg Mai 28, 2018 3:06 am

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por eletr1c0 »

Nil, estou utilizando o ChromeDriver, e nele não funciona, o erro persiste o mesmo.
Tentei atualizar o FireFoxDriver usando o geckodriver mas diferente do chromedriver, o geckodriver é exe e o driver que o selenium usa no firefox é um .xpi. Logo não consegui testar usando o FireFox.

Por outro lado tentei usar o Edge atualizado para fazer esse teste, ele até executa o código todo, mas ele não coloca a senha, ele simplesmente pula a mesma.


Muito obrigado pelo retorno que já foi feito até agora e qualquer outro futuro!


Nill2016
Colaborador
Colaborador
Mensagens: 32
Registrado em: Qua Mai 09, 2018 11:34 am

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por Nill2016 »

Fiz vários testes no computador de casa e não vai de jeito nenhum. Depois vou testar no da empresa para ver o que acontece. Em casa ele preenche o user e o uc. Como eu tenho Firefox Quantum tem que configurar o geckodriver, também não consegui fazer o teste nele.


eletr1c0
Colaborador
Colaborador
Mensagens: 15
Registrado em: Seg Mai 28, 2018 3:06 am

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por eletr1c0 »

Pois é! Exatamente Nil. Se funcionar e puder me dar um toque sobre como configurar o geckodriver, fico muito agradecido!


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por Mikel Silveira Fraga »

Bom dia a todos.

Leonardo e Nill, consegui dar foco no elemento da senha. O que ocorre que existem dois elementos para senha.

O elemento que é exibido, tem o seguinte Id: "ctl00_ContentPlaceHolder1_loginmenu1_txtSENHATXT".
O elemento que recebe a senha, que fica bloqueado ao inicializar a página, possui o seguinte Id: "ctl00_ContentPlaceHolder1_loginmenu1_txtSENHA".

Quando o campo é selecionado pelo mouse, é disparado um evento que inverte os dois elementos, permitindo que a senha seja digitada.

O que fiz foi forçar um Método Click no elemento visível, de forma que o campo seja selecionado, o evento de inversão dos elementos é disparado e a senha é inserida via VBA.

Um pouco complexo de entender. Talvez fique mais fácil com o código abaixo:

Código: Selecionar todos

Public driver As Selenium.WebDriver

Public Sub LogaHardmob()
  
  Const sUser As String = "ctl00_ContentPlaceHolder1_loginmenu1_txtUSUARIO"
  Const sHide As String = "ctl00_ContentPlaceHolder1_loginmenu1_txtSENHA"
  Const sPass As String = "ctl00_ContentPlaceHolder1_loginmenu1_txtSENHATXT"
  Const sUc As String = "ctl00_ContentPlaceHolder1_loginmenu1_txtINSTALACAO"
  Const sButton As String = "ctl00_ContentPlaceHolder1_loginmenu1_btnLOGIN"
  
  Set driver = New ChromeDriver
  
  With driver
    .Get "https://www.cpflempresas.com.br"
    
    Call .FindElementById(sUser).SendKeys("987654321")
    Call .FindElementById(sPass).Click
    Call .FindElementById(sHide).SendKeys("123456")
    Call .FindElementById(sUc).SendKeys("23")
    Call .FindElementById(sButton).Click
    
    .Quit
  End With

End Sub
Tela com preenchimento completo
Tela com preenchimento completo
TelaSite.jpg (357.67 KiB) Exibido 8679 vezes
Confesso que a muito tempo não pego uma lógica tão louca para se desvendar, mas foi divertido.

Espero que funcione e resolva o problema de vocês.

Forte abraço e excelente semana.


eletr1c0
Colaborador
Colaborador
Mensagens: 15
Registrado em: Seg Mai 28, 2018 3:06 am

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por eletr1c0 »

Mikel, primeiramente, muito obrigado. Nil, muito obrigado pela ajuda também.

Eu tinha reparado nesses 2 campos senha e senhaTXT, tinha tentado fazer várias coisas com ambos, porém, não tinha tentado clicar em um e escrever no outro. No fim acabei migrando para o Python e consegui, mas com esse código em mãos vou fazer as duas versões do código!


Valeu pessoal!


Nill2016
Colaborador
Colaborador
Mensagens: 32
Registrado em: Qua Mai 09, 2018 11:34 am

Re: CANNOT FOCUS ELEMENT PARA SENHAS

Mensagem por Nill2016 »

Mikel e eletr1c0, eu só tinha me atentado que variava o id mas não tinha percebido que era no clique. Agora sabendo desta pegadinha vou prestar mais atenção, valeu pela dica.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder