Às vezes nos deparamos com cenários em que queremos que o Selenium se conecte e use um navegador existente que foi anteriormente aberto manualmente ou por algum outro programa.

Por que queremos que o Selenium se conecte a um navegador previamente aberto?

  • Talvez você queira executar algumas tarefas que requerem intervenção manual antes de iniciar a execução de automação. Por exemplo, podemos precisar iniciar manualmente o navegador, navegar até a página desejada, executar algumas tarefas manuais, como inserir captcha manualmente e, em seguida, executar o script de automação para continuar a partir daí.
  • Clicar em um botão em um aplicativo de desktop abre uma página web. Temos outra ferramenta para automatizar o aplicativo de desktop, mas queremos que o Selenium assuma o controle no momento em que a página da web for aberta.
  • Depuração – Vamosdizer que estamos trabalhando em um script de teste para uma determinada tela (checkout de produto) no aplicativo. Mas o script para chegar a essa página (adicionar ao carrinho) ainda não está pronto. Podemos lançar manualmente o navegador e navegar para essa página e, em seguida, executar o script de automação.

Agora, estamos de volta à pergunta original : Como conectar o Selenium a uma sessão de navegador existente?

Podemos aproveitar oProtocolo Chrome DevTools. Permite que os clientes inspecionem e depurem o navegador Chrome.

Pré-requisito: Adicionar Chrome ao PATH

Certifique-se de que o caminho para execução do cromado seja adicionado à variável ambiente. Você pode verificá-lo executando o comando (no Windows) ou (no Mac). Ele deve lançar o navegador Chrome.PATHchrome.exeGoogle/ Chrome

Se você receber uma mensagem semelhante à abaixo, isso significa que o Chrome não será adicionado ao caminho do seu sistema:

'chrome' is not recognized as an internal or external command,
operable program or batch file.

Se esse for o caso, sinta-se à vontade para o Googlecomo adicionar chrome ao PATH? Se você estiver no Mac, siga os passosneste Link.

Passo 1: Lançar navegador com bandeiras personalizadas

Para permitir que o Chrome abra uma porta para depuração remota, precisamos lançá-la com uma bandeira personalizada –

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\ChromeProfile"

Para Mac:

Google\ Chrome --remote-debugging-port=9222 --user-data-dir="~/ChromeProfile"

Para o valor você pode especificar qualquer porta que esteja aberta.--remote-debugging-port

Forflag você precisa passar por um diretório onde um novo perfil do Chrome será criado. Ele está lá apenas para garantir que o Chrome seja lançado em um perfil separado e não polua seu perfil padrão.--user-data-dir

Uma vez que o Chrome é lançado desta forma, ele abriu uma conexão na porta dada a que qualquer cliente pode se conectar para depuração.

Agora você pode jogar com o navegador manualmente, navegar para quantas páginas, executar ações e uma vez que você precisa do seu código de automação para assumir o comando, você pode executar seu script de automação. Você só precisa modificar seu script Selenium para fazer o Selenium se conectar ao navegador aberto.

Você pode verificar se o Chrome foi lançado da maneira correta:

  • Inicie uma nova janela do navegador_normalmente_ (sem qualquer sinalização) e navegue parahttp://127.0.0.1:9222
  • Confirme se você vê a referência da página inicial do Google na segunda janela do navegador

Passo 2: Inicie o navegador com opções

Aqui está aquele código simples, mas mágico de Java e Python. Você pode facilmente convertê-lo em uma linguagem de programação de sua escolha.

// JAVA Example
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

//Change chrome driver path accordingly
System.setProperty("webdriver.chrome.driver", "C:\\selenium\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress", "127.0.0.1:9222");
WebDriver driver = new ChromeDriver(options);
System.out.println(driver.getTitle());
# PYTHON Example
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
#Change chrome driver path accordingly
chrome_driver = "C:\chromedriver.exe"
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
print driver.title

Qual é o valor sob o depuradorAddress?

O URL denota seu local. Nós fornecemos a mesma porta, ou seja, que usamos para lançar o Chrome comflag. Embora você possa usar qualquer porta, você precisa ter certeza de que ela está aberta e disponível para uso.127.0.0.19222--remote-debugging-port

Solucionando problemas

Não posso me conectar à janela do navegador.

  • Confirme, se você lançou o navegador da mesma forma descrita no tutorial –Verifique esta seção
  • Ir manualmente para a mesma janela do navegadorwww.google.com
  • Inicie uma nova janela do navegador_normalmente_ (sem qualquer sinalização) e navegue parahttp://127.0.0.1:9222
  • Confirme se você vê a referência da página inicial do Google na segunda janela do navegador

Posso me conectar à janela do navegador manualmente, mas não através do código.

  • Verifique se você importou as embalagens certas. Consulte o bloco de código acima.
  • Verifique se você tem driver cromado certo de acordo com a versão instalada do Chrome. Por favor, consulteEste Link

Se você achou este tutorial útil, por favor compartilhe-o com o mundo.


Artigo Original