Validação da Instal...
 
Notifications
Clear all

Validação da Instalação do Selenium Basic

7 Posts
3 Usuários
8 Reactions
2,069 Visualizações
(@mikel-silveira-fraga)
Posts: 41
Eminent Member
Topic starter
 

Boa noite povo do Fórum. Espero que estejam todos bem.

Pessoal, gostaria de uma sugestão de vocês. Estou produzindo uma Classe (Módulo de Classe), que irá utilizar o Selenium como base, pois se trata de um processo de WebScraping, que poderá ser reaproveitado em outros projetos, se Deus abençoar.

Sobre o desenvolvimento da Classe, não tenho nenhum problema, mas estou pretendendo adicionar uma validação, logo que a Classe for Instanciada, ou seja, convertida em objeto. Essa validação, consiste em verificar se o Selenium Basic esta instalado no PC, impedindo a conclusão do processo de criação da instância, caso o Selenium não esteja instalado localmente.

Ai vem minha dúvida, a qual gostaria da opinião dos que mais entendem. Qual o melhor caminho para validar essa instalação:

- [b]Através da referência do GUID, no próprio VBE?[/b] Se estiver instalado, vai estar ali. Porém, todos os códigos que vi sobre GUID, precisam que a referência esteja marcada.

- [b]Através da pasta de instalação?[/b] Na instalação do Selenium Basic, o diretório de instalação é padrão, sendo alterado apenas a pasta correspondente ao usuário logado no PC. O interessante desse código que, mesmo utilizando uma classe, que será utilizada em PCs diferentes e com usuários diferentes, posso utilizar a Função Environ, para capturar o usuário logado no PC.

- [b]Através do registro do Windows?[/b] Essa, tem a vantagem de que após a instalação, o diretório do Selenium estará registrada no Path da Máquina, podendo ser validada via Registro ou pelo próprio Environ.

Qual melhor caminho utilizar para essa validação?
Gostaria muito da opinião dos amigos. Fico no aguardo.
Abraço a todos e excelente final de semana.

Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Mikel Silveira Fraga
E-mail: [email protected]
Skype: mikelsf

 
Postado : 13/11/2020 1:06 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bom dia, amigo @mikel-silveira-fraga

Vc poderia fazer um teste simples de funcionalidade, por exemplo:

Function SeleniumIsReady() As Boolean
On Error Resume Next
SeleniumIsReady = IsObject(CreateObject("Selenium.Application"))
On Error GoTo 0
End Function

Se estiver instalado e funcionando, a função retornaria obrigatoriamente True.

Em relação às alternativas que vc discutiu, penso eu que usar o GUID é muito mais garantido que o Path, principalmente pq teu público-alvo por natureza é usuário avançado e, apesar de raro, têm potencial de alterar diretórios de instalação de programas e nesses casos o uso de Environ não seria muito seguro. Mesmo assim, buscar o GUID ou o Path através do registry ou o Path através do Environ não é nada confiável, pois ambos podem ainda existir como lixo após o usuário ter (mal) instalado/desinstalado a biblioteca.

Fiz um teste de simulação forçado aqui (código abaixo) antes e depois de desinstalar o Selenium e realmente isso ocorreu pq o caminho permaneceu (lixo de desinstalação):

Function SeleniumIsReady2() As Boolean
  SeleniumIsReady2 = Dir(Environ("LOCALAPPDATA") & "\SeleniumBasic\", vbDirectory) <> vbNullString
End Function
 
 
Postado por: @mikel-silveira-fraga

Através da referência do GUID...

..., precisam que a referência esteja marcada.

Logicamente vc poderia adicionar a referência on the fly usando o GUID por exemplo no Initialize da classe só pra testar se a biblioteca está presente e operante como abaixo, mas um agravante é que precisa saber a versão da biblioteca que está instalada (Major/Minor, no caso versão 2.0).

Function SeleniumIsReady3() As Boolean
  On Error Resume Next
    ThisWorkbook.VBProject.References.AddFromGuid GUID:="{0277FC34-FD1B-4616-BB19-A9AABCAF2A70}", Major:=2, Minor:=0
    If Err.Number = 0 Or Err.Number = 32813 Then SeleniumIsReady3 = True
  On Error GoTo 0
End Function
 

Ou usar WMI... ou Shell... mas acho que seria adicionar complexidade desnecessária ao seu projeto.

Enfim, em minha opinião ainda ficaria com o primeiro, apesar de não tão elegante.

 

 
Postado : 17/11/2020 9:22 am Notice: Undefined offset: 2 in /home/planilhando.com.br/public/wp-content/plugins/wpforo/modules/reactions/classes/Template.php on line 94 Notice: Trying to access array offset on value of type null in /home/planilhando.com.br/public/wp-content/plugins/wpforo/modules/reactions/classes/Template.php on line 94 Notice: Undefined offset: 2 in /home/planilhando.com.br/public/wp-content/plugins/wpforo/modules/reactions/classes/Template.php on line 94 Notice: Trying to access array offset on value of type null in /home/planilhando.com.br/public/wp-content/plugins/wpforo/modules/reactions/classes/Template.php on line 94
(@mikel-silveira-fraga)
Posts: 41
Eminent Member
Topic starter
 

@edsonbr, bom dia.

Adorei seus comentários. Entendi todos os pontos e, realmente, considerações como o caso da opção 2, eu não havia observado.

Sobre a mudança do Selenium de lugar no PC, realmente se for um usuário avançado, pode ocorrer, mas para usuários com pouco conhecimento não. A instalação do Selenium não permite alteração do destino. Mas, se no PC tiver mais de um usuário configurado, já pode ocorrer algum erro.

Gostei muito da primeira opção, pois foi simples e direta. Se me permitir, vou consumir essa solução, deixando no código os devidos créditos.

Muito obrigado mais uma vez e excelente restante de semana.

Este post foi modificado 4 anos atrás por Mikel Silveira Fraga

Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Mikel Silveira Fraga
E-mail: [email protected]
Skype: mikelsf

 
Postado : 18/11/2020 8:23 am
teleguiado and EdsonBR reacted
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 
 
Postado por: @mikel-silveira-fraga

Se me permitir, vou consumir essa solução, deixando no código os devidos créditos...

...Muito obrigado mais uma vez... 

Eu é que agradeço, pois já aprendi muito com suas dicas de Webscraping nas suas postagens principalmente no Tomás, com suas explicações do uso do Selenium ou mesmo de interpretação de elementos de HTML/Java, etc.

Aliás, se um dia vc dispor de algum tempo entre um projeto e outro, que tal um tutorial ou uma série de vídeos levando em conta usuários avançados de Excel que não manjam nada de HTML, JS (tô nesse time, hehehe), etc.? Em como usar e o que dá pra fazer com a ferramenta de desenvolvedor que está presente em todos os navegadores, ajudar a entender um pouco, como usar e o que dá pra extrair das sopas de letrinhas (GET, POST, XPath, Div's, etc., etc...)...

Tem uma lacuna bem grande nesse segmento. Os cursos que por aí existem são focados quase que exclusivamente no desenvolvimento de páginas Web.

Links "peneirados" já serviriam e seriam muito bem vindos. 👍 

 

 
Postado : 18/11/2020 9:08 am
(@mikel-silveira-fraga)
Posts: 41
Eminent Member
Topic starter
 
Postado por: @edsonbr
 
Eu é que agradeço, pois já aprendi muito com suas dicas de Webscraping nas suas postagens principalmente no Tomás, com suas explicações do uso do Selenium ou mesmo de interpretação de elementos de HTML/Java, etc. 

Eita @edsonbr, assim fico sem graça. 

É muito bom ver esse tipo de comentário. Eu tive sorte em me desenvolver bem no quesito Web Scraping, isso por que eu trabalhei muito com HTML, sem nenhuma IDE ou Framework, no final na década de 90 (olha eu entregando a idade). Por essa familiaridade com as Tags, não tive tanta dificuldade no aprendizado.

Além disso, não gosto de ficar preso em apenas uma metodologia. Como você disse, o aprendizado de um determinado assunto, é restrito a uma coisa única. Eu gosto de explorar outras linguagens (PHP, JS, Python, etc) e métodos (UML, Scrum, CRUD, etc), para trazê-los para o ambiente VBA. Isso faz com que melhoremos muito o raciocínio, além de aprendermos a pensar fora da caixa.

 

Postado por: @edsonbr
 
Aliás, se um dia vc dispor de algum tempo entre um projeto e outro, que tal um tutorial ou uma série de vídeos levando em conta usuários avançados de Excel que não manjam nada de HTML..

Olha, como deve ter percebido, estou bem sumido das redes sociais e fóruns, pelo menos nos dois últimos anos. Porém, estou pensando mesmo em retornar com mais publicações (fóruns e youtube). Estou apenas colocando algumas coisas em ordem e devo começar a gravar umas coisas novas. Essa é uma ideia interessante para se explorar. Acredito que será bem interessante sim.

 

Mais uma vez obrigado pelo reconhecimento e a ajuda no tópico.

Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Mikel Silveira Fraga
E-mail: [email protected]
Skype: mikelsf

 
Postado : 18/11/2020 2:00 pm
EdsonBR reacted
(@Anônimo)
Posts: 0
 

@mikel-silveira-fraga

@EdsonBR

Caros,

Antes de mais nada, gostaria de lhes dizer que essa solução me ajudou bastante e quero aproveitar para lhes agradecer e também lhes parabenizar. Tenho utilizado esse recurso algumas vezes. Nessa semana me deparei com uma situação onde esse mesmo código funciona normalmente em uma máquina, porém não funciona em outra (dá erro na linha de criação do objeto) (Erro em tempo de execução). É possível que isso aconteça devido uma máquina ser 64 bits e outra 32 bits ? Se sim, existe alguma solução para isso?

Function SeleniumIsReady() As Boolean
On Error Resume Next
SeleniumIsReady = IsObject(CreateObject("Selenium.Application"))
On Error GoTo 0
End Function

Obrigado mais uma vez

Abraço

Rogério Consolin

 
Postado : 02/06/2021 5:49 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

@rogerio, boa noite e bem vindo!

Estranho isso, pois não deveria mostrar mensagem de erro, pois está numa estrutura de armadilha de erros... Mas enfim.

Não creio que seja arquitetura 32x64 bits o problema. Vc instalou qual versão do Selenium? Selenium VBA? Selenium Basic?

A correta, embora soe estranho, seria a do Selenium Basic, não a do Selenium VBA.

 
Postado : 03/06/2021 8:52 pm