Ubuntu - Rodando Script com Selenium Grid - Meu primeiro teste
Ubuntu - Rodando Script com Selenium Grid | ||
Canal Qb |
Fala galera estou tentando rodar o selenium para clicar o captcha em outro pc de forma remota, para que eu possa executar uma automação em um servidor.
O problema é como resolver isso, em minha pesquisa achei o Selenium Server, ou Grid, tentei de varias maneiras e sem sucesso, até que, achei um doido na internet com a primeira informação inicial.
E agora vou replicar para você.
Informo que neste momento do vídeo, o selenium server está na versão selenium-server-4.9.0.jar, mas não tive resultados com ele, estamos falando de webdriver e chrome na versão 113, então precisamos nos atentar que tanto o servidor quanto o cliente deve estar nas mesmas versões.
Primeiro vamos preparar o Script para o servidor, no meu caso linux. acreditando que tudo esteja configurado e de acordo, basta criar o script.
1. from selenium import webdriver2. from selenium.webdriver.common.desired_capabilities import DesiredCapabilitiescapabilities = DesiredCapabilities.CHROME.copy()3. grid_url = "http://192.168.0.11:4444/wd/hub"4. driver = webdriver.Remote(command_executor=grid_url,desired_capabilities=capabilities)# Navegar para uma página de exemplo5. driver.get("https://bit.ly/3lOMxyx")6. driver.save_screenshot("screenshot.png")7. print(driver.title)8. driver.quit()
Vamos explicar algumas linhas:
A linha 1, importa o selenium então no caso do Windows você pode baixar diretamente no caminho https://cb.run/3SJg dentro do site do Chromium, o próximo passo é importante e melhor indicado, salve em um caminho e adicione o caminho no path do Windows. Como eu sou preguiçoso eu salvei no c:\windows\system32, assim não preciso criar mais um path, ele já é de sistema.
Outra etapa agora é instalar o java, sim você vai precisar do java para executar o server do selenium
No momento deste post, eu baixei a versão 17 do Java SE https://cb.run/4bUm no formato msi e instalei.
Feito isso é hora de baixar o arquivo jar do selenium server, como já informei o 4.9.0 não funcionou ainda comigo, por que eu ainda não acertei a configuração, mas vai que você acerta né.
Então vou disponibilizar o link para os 2 jar, e você decide o que fazer, ok?
Primeiro o funcional deste post: https://cb.run/97LD esta é a versão 3.141.59.
Segundo o que eu não usei: https://cb.run/Fx6U sempre vai mostrar a ultima versão
É logico que estou aprendendo então me serve neste momento, mas como todos sabem cada atualização possui mais recursos, então em breve iremos para a versão mais atual, para ver o que dá pra fazer.
Salve onde decidir, eu também coloquei no path c:\windows\system32
Mas você não precisa do path, você pode identificar o caminho diretamente na execução.
A linha 2, é o comando para chamar o selenium-server dentro do seu script
A linha 3, é onde será exibido a tela que o script irá precisar abrir. O ip informado, é minha maquina cliente e não minha maquina servidor 192.168.0.11.
Meu servidor: Ubuntu 18.04 Server sem interface gráfica, Python 3.8.16, Chorme e Driver 113, IP 192.168.0.2
Meu cliente: Windows 10, , Python 3.8.16, Chorme e Driver 113, IP 192.168.0.11
Eu salvei o ip de todos os meus equipamentos dentro do roteador, por isso sempre será fixo.
Você pode fazer o mesmo, ou deixar fixo nas configurações de rede de cada equipamento.
A linha 4, chama o webdriver, é que a função para abrir o seu navegador, ou local ou remotamente, e neste exemplo vamos tratar como remoto. a palavra driver é apenas a variável que vai assumir o seu navegador.
A linha 5, Abre a pagina que você determinar, que seja carregada.
A linha 6, tira um print da tela, e salva no mesmo local do seu script, caso deseje outro caminho, basta informar ele neste comando, ótimo para monitorar status das telas quando não possuir interface grafica.
A linha 7, imprime o titulo na tela onde está sendo executado o script.
A linha 8, Fecha o Navegador
Agora vamos criar dois arquivos dentro do seu computador cliente, eles precisam ser executados simultaneamente para que o teste funcione.
Crie um arquivo e chame de hub.bat (nome que quiser), e cole este comando nele.
java -jar Z:\python\selenium\selenium-server-standalone-3.141.59.jar -role hub
Crie um arquivo e chame de chrome.bat (nome que quiser), e cole este comando nele.
java -Dwebdriver.chrome.driver="c:\Windows\System32\chromedriver.exe" -jar Z:\python\selenium\selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.0.11:4444/grid/register/
Feito essa etapa, agora vamos aos prints, execute primeiramente o hub.bat ele precisa ter esse comportamento.
Se tudo estiver ok, será isso que você irá ver, a única diferença é a linha onde informa o ip, este ip é de sua maquina cliente, monte o seguinte link agora http://192.168.0.11:4444/grid/console, lembrando que o ip deve ser o seu e carregue no seu navegador.
Esta será a tela que você irá ver, para carregar as informações do Config for the hub, apenas clique no View Config, após a pagina ser carregada.
Ainda com o hub.bat em aberto, execute o segundo arquivo, o chrome.bat
Recarregue a pagina, e observe como ela se comporta agora:
Ela está falando que neste momento inicial da configuração, ela está suportando uma sessão de internet explorer, e 5 sessões de chrome e de firefox, mas só precisamos de uma sessão.
Então é hora de voltar no servidor, no meu caso eu uso o putty https://cb.run/u0St
Vou repetir o script com algumas observações, para vocês agora:
from selenium import webdriverfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilities# Configurar as capacidades desejadas para o navegadorcapabilities = DesiredCapabilities.CHROME.copy()# Endereço do servidor do Selenium Gridgrid_url = "http://192.168.0.11:4444/wd/hub"# Inicializar o driver remotodriver = webdriver.Remote(command_executor=grid_url,desired_capabilities=capabilities)# Navegar para uma página de exemplodriver.get("https://miningness.com/")driver.save_screenshot("screenshot.png")# Fazer algo com a página carregada...# Por exemplo, imprimir o título da páginaprint(driver.title)# Fechar o driverdriver.quit()
E vamos executar.
Obrigado, e vou tentar trazer novidades para vocês.
Nenhum comentário
Comente só assim vamos crescer juntos!
Observação: somente um membro deste blog pode postar um comentário.