Selenium Firefox Perfil: Guia de configuração

⚔ Resumo Inteligente

Firefox O perfil armazena os favoritos, senhas, complementos e preferências que pertencem a um usuÔrio do navegador, e Selenium O WebDriver pode carregar um perfil dedicado para que cada execução automatizada comece a partir de um estado de navegador idêntico e previsível.

  • šŸ”˜ InformaƧƵes bĆ”sicas do perfil: A Firefox O perfil armazena os favoritos, senhas salvas, complementos, certificados e preferĆŖncias de um usuĆ”rio em uma Ćŗnica pasta.
  • ā˜‘ļø Localização do perfil: Windows, Linux e macOS Cada loja armazena pastas de perfil em um caminho diferente dentro do diretório do usuĆ”rio.
  • āœ… Criação de perfil: O gerenciador de perfis integrado abre com firefox.exe -p e cria um perfil de automação limpo em cinco etapas.
  • 🧪 Code Acesso: A classe ProfilesIni lĆŖ o arquivo profiles.ini e o mĆ©todo getProfile retorna o perfil especificado como um objeto. FirefoxObjeto de perfil.
  • šŸ› ļø Sintaxe atual: Selenium 3 e 4 passam o perfil FirefoxOptions.setProfile em vez de FirefoxConstrutor de drivers.
  • āš ļø PreferĆŖncias: O parĆ¢metro setPreference controla a pasta de downloads, as notificaƧƵes, o idioma e o gerenciamento de certificados antes da inicialização do navegador.

Selenium Firefox Guia de configuração de perfil

Selenium Firefox Perfil

Firefox perfil é a coleção de configurações, personalização, complementos e outras configurações de personalização que podem ser feitas no Firefox Browser. Você pode personalizar Firefox perfil adequado ao seu Selenium exigência de automação.

Também, Firefox ou qualquer outro navegador lida com as configurações dos certificados SSL. Portanto, automatizÔ-los faz muito sentido junto com o código de execução do teste.

Em resumo, um perfil são as configurações pessoais de um usuÔrio. Quando você deseja executar um serviço confiÔvel... automação com um Firefox Se você estiver usando um navegador, é recomendÔvel criar um perfil separado. Um perfil dedicado também mantém seus dados de navegação diÔrios fora do teste, o que é a primeira coisa a descartar ao configurar um navegador. Selenium O script se comporta de maneira diferente em duas mÔquinas diferentes.

Localização da pasta do seu perfil no disco

Firefox perfil é como diferentes usuÔrios usando Firefox. Firefox Salva informações pessoais como favoritos, senhas e preferências do usuÔrio, que podem ser editadas, excluídas ou criadas usando o gerenciador de perfil.

A captura de tela abaixo mostra uma pasta de perfil tal como aparece no disco, nomeada de acordo com o perfil com um prefixo aleatório.

Firefox Pasta de perfil exibida no disco com seu prefixo aleatório

A localização do perfil é a seguinte

  • Para Windows > C:\UsuĆ”rios\ \AppData\Roaming\Mozilla\Firefox\Profiles\nome_do_perfil.padrĆ£o
  • Para Linux > ~/.mozilla/firefox/nome_do_perfil.padrĆ£o/
  • Para Mac OS X > ~/Library/Application Support/Firefox/Perfis/nome_do_perfil.default/

Para executar um sucesso Selenium Teste, um Firefox o perfil deve ser -

  • FĆ”cil de carregar
  • ConfiguraƧƵes de proxy, se necessĆ”rio
  • Outras configuraƧƵes especĆ­ficas do usuĆ”rio com base nas necessidades de automação

Como definir Firefox Perfil para Selenium Testes

Vamos ver passo a passo como criar um Firefox perfil.

Passo 1) Feche o Firefox navegador

No primeiro passo, feche Firefox Se jÔ estiver aberto. O gerenciador de perfis não serÔ iniciado enquanto estiver aberto. Firefox A janela estÔ em execução.

Passo 2) Abra Executar (Windows tecla + R) e digite firefox.exe –p

Antes de clicar em OK, a caixa de diÔlogo Executar deverÔ ter a aparência da captura de tela abaixo.

Windows Execute o diƔlogo com o comando firefox.exe -p digitado em

Observação: Se não abrir, você pode tentar usar o caminho completo entre aspas.

  • Em 32 bits Windows: ā€œC:\Arquivos de Programas\Mozilla Firefox\firefox.exeā€ –p
  • Em 64 bits Windows (32 bits Firefox): ā€œC:\Program Files (x86)\Mozilla Firefox\firefox.exeā€ –p

Passo 3) Escolha o perfil do usuƔrio

Agora, uma caixa de diƔlogo chamada Firefox AbrirƔ, conforme mostrado abaixo.

Firefox A caixa de diƔlogo "Escolher perfil de usuƔrio" lista os perfis existentes.

Passo 4) Criar Perfil

Selecione a opção Criar Perfil mostrada na próxima captura de tela para iniciar o assistente.

Tela de boas-vindas do Assistente de Criação de Perfil na Firefox gerenciador de perfil

Agora, selecione a opção Criar perfil na janela e um assistente serÔ aberto. Clique em próximo.

Passo 5) DĆŖ o nome do seu perfil

Digite um nome para o perfil de automação no campo destacado abaixo e conclua o assistente.

Entrando em um novo Firefox Nome do perfil no Assistente de Criação de Perfil

Agora que seu perfil estÔ pronto, você pode selecionar seu perfil e abrir FirefoxA partir daqui, o perfil se comporta como qualquer outra sessão do navegador, portanto, um primeiro script WebDriver irÔ correr contra ele sem alterações.

Você notarÔ que o novo Firefox A janela não mostrarÔ nenhum dos seus ícones de marcadores e favoritos.

Nota: O último perfil selecionado serÔ carregado automaticamente na próxima tela. Firefox lançar. Você precisarÔ reiniciar o gerenciador de perfis se desejar alterar os perfis.

Script de automação para Selenium

Com o perfil criado, o próximo passo é carregÔ-lo a partir do código. Para acessar o perfil recém-criado. Firefox perfil em um Selenium Para testar o software WebDriver, precisamos usar a classe integrada do WebDriver, ProfilesIni, e seu método getProfile, conforme mostrado abaixo.

āš ļø Nota sobre a versĆ£o: Os trechos desta seção sĆ£o originais. Selenium 2Āŗ formulĆ”rio. Na atualidade Selenium libera as vidas da classe em org.openqa.selenium.firefox.ProfilesIni - O .interno O pacote adicional foi descartado — e o perfil Ć© entregue ao motorista atravĆ©s de FirefoxOpƧƵes. Veja as FirefoxA seção de opƧƵes abaixo apresenta o equivalente moderno.

Selenium código para o perfil

Este é um código para implementar um perfil, que pode ser incorporado no Selenium código.

ProfilesIni profile = new ProfilesIni();

// isso criarĆ” um objeto para o Firefox profile

FirefoxProfile myprofile = profile.getProfile("xyzProfile");

// isso irĆ” inicializar o Firefox motorista

WebDriver driver = new FirefoxDriver(myprofile)

Vejamos a implementação desse código nos exemplos a seguir.

Firefox Exemplo de perfil 1

O primeiro exemplo carrega um perfil pelo nome. A captura de tela abaixo mostra o mesmo script dentro do editor.

Firefox Exemplo de perfil 1: script carregando um perfil pelo nome no editor.

// import the package
import java.io.File;
      import java.util.concurrent.TimeUnit;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
public class FirefoxProfile {
 	public static void main(String[] args) {
	ProfilesIni profile = new ProfilesIni();
	FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// Initialize Firefox driver
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window
	driver.manage().window().maximize();
//Go to URL which you want to navigate
	driver.get("http://www.google.com");
//Set  timeout  for 5 seconds so that the page may load properly within that time
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser
	driver.close();
}

}

Explicação para o código

Abaixo estÔ a explicação do código linha por linha.

  • Code linha 2-7: Em primeiro lugar, precisamos importar o pacote necessĆ”rio para executar o Selenium código.
  • Code linha 8: Criar uma classe pĆŗblica ā€œFirefoxPerfil."
  • Code Linha 9: Crie um objeto (vocĆŖ precisa ter conhecimento bĆ”sico de conceitos de POO).
  • Code linhas 10-11: Precisamos inicializar Firefox perfil com o objeto de meu perfil.
  • Code linha 13: Criar objeto para Firefox.
  • Code Linha 15: Maximizar janela.
  • Code linha 17: driver.get Ć© usado para navegar atĆ© o local especificado. URL.
  • Code Linha 19: O tempo limite definido Ć© usado para aguardar um determinado perĆ­odo de tempo para que o navegador possa carregar a pĆ”gina antes de prosseguir para a próxima pĆ”gina.
  • Code linha 21: Fechar Firefox.

Vejamos mais um exemplo.

Firefox Exemplo de perfil 2

O segundo exemplo ignora o arquivo profiles.ini e aponta diretamente para a pasta do perfil, como mostra a captura de tela do editor.

Firefox Exemplo de perfil 2 script apontando FirefoxPerfil em um caminho de pasta

import java.io.File;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;

public class FirefoxProfile2{
public static void main(String[] args) {

// Create object for FirefoxProfile
	FirefoxProfilemyprofile=newFirefoxProfile (newFile("\c:users\AppData\MozillaFirefoxProfile_name.default "));  
// Initialize Firefox driver    
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window       
	driver.manage().window().maximize();
//Go to URL      
	driver.get("http://www.google.com");
//Set  timeout      
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser  
	driver.close();
    }

Explicação para o código

Abaixo estÔ a explicação do código linha por linha.

  • Code linha 1-6: Em primeiro lugar, precisamos importar o pacote necessĆ”rio para executar o Selenium código.
  • Code linha 8: Criar uma classe pĆŗblica FirefoxPerfil 2.
  • Code Linha 12: Crie o objeto myprofile referenciando o caminho exato.
  • Code linha 14: Criar objeto para Firefox.
  • Code Linha 16: Maximizar janela.
  • Code linha 18: driver.get Ć© usado para navegar atĆ© o local especificado. URL.
  • Code Linha 20: O tempo limite definido Ć© usado para aguardar um determinado perĆ­odo de tempo para que o navegador possa carregar a pĆ”gina antes de prosseguir para a próxima pĆ”gina.
  • Code linha 22: Fechar Firefox.

Observe que o caminho neste trecho estĆ” escrito exatamente como o tutorial original mostra. Em uma mĆ”quina real, as barras invertidas devem ser escapadas, por exemplo, ā€œC:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\xyzProfile.defaultā€.

Como usar um Firefox Perfil em Selenium 4 com FirefoxOpƧƵes

Ambos os exemplos acima compilam apenas contra Selenium 2. Duas coisas mudaram depois disso, e todos os tutoriais atuais usam o formato mais recente.

  • ProfilesIni saiu do interno subpacote, portanto a importação agora Ć© org.openqa.selenium.firefox.ProfilesIni.
  • O FirefoxMotorista(FirefoxO construtor de perfil foi removido. O perfil estĆ” anexado a um FirefoxO objeto de opƧƵes Ć© passado para o driver.
  • Selenium 4 timeouts recebem um java.time.Duration em vez de um valor mais um TimeUnit, entĆ£o implicitlyWait(5, TimeUnit.SECONDS) torna-se implicitlyWait(Duration.ofSeconds(5)).

A tabela abaixo relaciona cada chamada legada Ć  sua substituta.

Chamada legada (Selenium 2) Chamada atual (Selenium 3 e 4)
import org.openqa.selenium.firefox.internal.ProfilesIni; import org.openqa.selenium.firefox.ProfilesIni;
new FirefoxMotorista (meu perfil) opƧƵes.setProfile(meuperfil); novo FirefoxMotorista (opƧƵes)
implicitamenteEspere(5, TimeUnit.SECONDS) implicitamenteEspere(Duração.deSegundos(5))
System.setProperty para geckodriver Resolvido automaticamente por Selenium Manager

Reescrito para a versão atual, o Exemplo 1 fica assim.

import java.time.Duration;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.ProfilesIni;

public class FirefoxProfileSelenium4 {
    public static void main(String[] args) {
        ProfilesIni allProfiles = new ProfilesIni();
        FirefoxProfile myprofile = allProfiles.getProfile("xyzProfile");

        FirefoxOptions options = new FirefoxOptions();
        options.setProfile(myprofile);

        WebDriver driver = new FirefoxDriver(options);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.get("https://www.google.com");
        driver.quit();
    }
}

A própria consulta de perfil permanece inalterada: ProfilesIni ainda lĆŖ profiles.ini do diretório. Firefox A pasta application-data e o mĆ©todo getProfile ainda retornam nulo quando o nome nĆ£o corresponde a um perfil, portanto, vale a pena adicionar uma verificação de nulo antes da inicialização do driver. O mesmo objeto de opƧƵes tambĆ©m carrega os argumentos usados ​​em outros lugares, como os de Maximizar ou redimensionar a janela do navegador.

Como definir Firefox PreferĆŖncias de perfil em Selenium

Um perfil salvo é apenas metade da história. A maioria das automações precisa de algumas preferências aplicadas no código para que o mesmo comportamento seja replicado em qualquer mÔquina. O método setPreference grava esses valores na cópia do perfil antes de Firefox lança.

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\selenium-downloads");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
profile.setPreference("dom.webnotifications.enabled", false);
profile.setPreference("intl.accept_languages", "es");

FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
WebDriver driver = new FirefoxDriver(options);

As preferências abaixo abrangem os casos que surgem com mais frequência no dia a dia da criação de scripts.

preferĆŖncia O que ele controla
lista de pastas de download do navegador Defina como 2 para usar uma pasta de downloads personalizada em vez da pasta padrão do sistema.
navegador.download.dir O caminho absoluto Firefox Salva downloads em.
navegador.helperApps.neverAsk.saveToDisk Tipos MIME salvos sem exibir a caixa de diƔlogo de download.
dom. webnotifications. ativado Defina como falso para suprimir as solicitaƧƵes de notificaƧƵes push na web.
intl.accept_languages O cabeçalho Accept-Language é útil para processos de localização.
geral.useragent.override Substitui a sequência de caracteres do agente do usuÔrio enviada pelo navegador.

Ɖ importante conhecer duas limitaƧƵes. As preferĆŖncias devem ser definidas antes da criação do driver, pois o WebDriver copia o perfil na inicialização e as alteraƧƵes posteriores sĆ£o ignoradas. O WebDriver tambĆ©m reserva um pequeno conjunto de preferĆŖncias necessĆ”rias para se comunicar com o navegador e sobrescreve essas preferĆŖncias, independentemente das que vocĆŖ definir. Como esses valores residem no perfil e nĆ£o no script, eles tambĆ©m sĆ£o transferidos para o driver. teste de navegador cruzado Executar sem qualquer alteração no código de teste.

comum Firefox Erros de perfil em Selenium e como corrigi-los

Os problemas de perfil geralmente se manifestam como um erro de compilação ou como um navegador que abre com configurações incorretas. A tabela lista as falhas relatadas com mais frequência, juntamente com a causa de cada uma.

Sintoma Causar Fixar
O construtor FirefoxMotorista(Firefox(Perfil) não estÔ definido O construtor foi removido após Selenium 2. Envolva o perfil em FirefoxEm vez disso, passe as opções e o objeto de opções.
Não foi possível resolver a importação org.openqa.selenium.firefox.internal.ProfilesIni A classe foi movida para fora do subpacote interno. Importe org.openqa.selenium.firefox.ProfilesIni.
NullPointerException em getProfile O nome do perfil não corresponde a nenhuma entrada no arquivo profiles.ini. Reabra o gerenciador de perfis e copie o nome exatamente como estÔ, incluindo maiúsculas e minúsculas.
Sua Firefox O perfil não pÓde ser carregado. Ele pode estar ausente ou inacessível. Outras Firefox A instância jÔ contém o perfil ou o caminho da pasta estÔ incorreto. Feche tudo Firefox Em seguida, verifique o caminho em relação aos locais listados acima.
Uma preferência não tem efeito. Foi definido após a inicialização do driver, ou o WebDriver o reservou. Mova todas as chamadas setPreference para cima do FirefoxConstrutor de drivers.

Se o navegador iniciar corretamente, mas o script ainda falhar posteriormente, o perfil provavelmente não é a causa. Vamos analisar o problema. tratamento de exceções em Selenium geralmente é o caminho mais rÔpido a partir desse ponto.

Perguntas Frequentes

Não. FirefoxO driver nunca edita um perfil preexistente. Ele copia o diretório do perfil para um local temporÔrio, aplica as preferências necessÔrias ao WebDriver e inicia o navegador a partir dessa cópia, de modo que seus favoritos e senhas salvos permaneçam intactos.

Sim. Qualquer extensĆ£o instalada no perfil Ć© carregada com o navegador. VocĆŖ tambĆ©m pode chamar `profile.addExtension(new File(ā€œpath/to/extension.xpiā€))` para adicionar uma extensĆ£o em tempo de execução, o que mantĆ©m o perfil em disco limpo.

Python Não possui equivalente em ProfilesIni. Ponto FirefoxCrie o perfil no diretório de perfis e, em seguida, atribua-o ao arquivo options.profile antes de compilar o driver. Selenium Python Em seguida, clone essa pasta exatamente como estÔ configurada. Java faz.

Ferramentas de teste com auxílio de IA comparam as preferências capturadas em execuções bem-sucedidas com o perfil atual e sinalizam desvios, como alterações em um proxy ou pasta de downloads. Algumas estruturas também usam aprendizado de mÔquina para detectar instabilidades relacionadas ao perfil antes que uma compilação falhe.

Copiloto do GitHub Gera o código padrão rapidamente, mas frequentemente emite o código removido. FirefoxMotorista(FirefoxConstrutor de perfil aprendido com código antigo. Sempre confirme se a sugestão usa FirefoxOptions.setProfile e o pacote atual antes de confirmÔ-lo.

Sim. Chame `options.addArguments("-headless")` juntamente com `options.setProfile(profile)`. O perfil fornece preferências e extensões exatamente como antes, jÔ que o modo headless altera apenas a forma como o usuÔrio trabalha. Firefox O que importa é a renderização, não como o programa lê o diretório de perfis.

Como o WebDriver trabalha com uma cópia temporÔria e a exclui ao final da sessão, para manter as alterações, edite o perfil manualmente no gerenciador de perfis ou defina as preferências no código para que cada execução comece a partir do mesmo estado conhecido.

Nem sempre, mas ajuda. Anexar o perfil a FirefoxO pacote Options inclui as preferências junto com os recursos (capabilities), de forma que um nó remoto aplique a mesma pasta de downloads, proxy e gerenciamento de certificados que sua mÔquina local.

Resuma esta postagem com: