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: