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.







