Ultimas do CanalQb

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 webdriver
2. from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capabilities = 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 exemplo
5. 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

Este é o comportamento inicial da pagina quando carregada.
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 webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# Configurar as capacidades desejadas para o navegador
capabilities = DesiredCapabilities.CHROME.copy()

# Endereço do servidor do Selenium Grid
grid_url = "http://192.168.0.11:4444/wd/hub"

# Inicializar o driver remoto
driver = webdriver.Remote(
    command_executor=grid_url,
    desired_capabilities=capabilities
)

# Navegar para uma página de exemplo
driver.get("https://miningness.com/")
driver.save_screenshot("screenshot.png")
# Fazer algo com a página carregada...
# Por exemplo, imprimir o título da página
print(driver.title)

# Fechar o driver
driver.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.