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.
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.
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.
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.
Passo 4) Criar Perfil
Selecione a opção Criar Perfil mostrada na próxima captura de tela para iniciar o assistente.
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.
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.
// 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.
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.







