Como conectar o Selenium a um navegador existente que foi aberto manualmente?
À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.PATH
chrome.exe
Google/ 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 para
http://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.1
9222
--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 navegador
www.google.com
- Inicie uma nova janela do navegador_normalmente_ (sem qualquer sinalização) e navegue para
http://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.