Fazendo o Selenium abrir o Firefox com um profile específico
O Selenium nem sempre abre uma sessão do Firefox já carregando cookies e sessões de sites que usam SSO (single sign-on).
Single Sign-On são aqueles websites em que você faz login apenas uma vez e ele nunca mais pergunta, sempre que você abre o navegador ele está logado automaticamente (tipo Facebook, Gmail, Whatsapp Web).
Então como podemos fazer para que, ao abrir uma página pelo Firefox no Selenium, ela esteja na sessão em que haja o single sign-on ativado?
O método mais certo é forçar o Selenium a usar um Profile específico do Firefox. Um profile guarda todos os cookies, sessões e dados de navegação do Firefox.
Você também pode tentar executar o selenium, fazer o login manualmente, salvar os cookies num arquivo e carregá-los sempre quando precisar do single sign-on, mas isso não funciona com todos os websites (não funcionou com o WhatsApp Web).
Vendo, criando e editando profiles no Firefox
Para abrir o editor de profiles do Firefox, abra ele com o argumento -profilemanager:
[code language="bash"]./firefox -profilemanager[/code]
Uma janela abrirá, e nela você consegue ver o nome, editar e criar profiles.
Descobrindo a pasta de profiles no Firefox
No Linux a pasta de profiles está em:
[code language="bash"]~/.mozilla/firefox/codigo_aleatorio.nome_do_profile[/code]
Forçando o Selenium a usar o Profile do Firefox
Você precisa informar o caminho do seu Firefox Profile.
Se você estiver usando o Selenium Standalone, você pode passar um profile dentro do seu próprio computador (e não no computador onde o Selenium rodará, isso parece muito estranho, mas funciona!).
Referências
Documentação oficial do Firefox no Selenium para Python
https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.firefox.firefox_profile
Abrindo o Profile Manager do Firefox
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_9.7.0/com.ibm.db2.luw.qb.server.doc/doc/t0021672.html
Usando o Profile do Firefox no Selenium com Java
https://stackoverflow.com/questions/16616808/remote-webdriver-passing-firefox-profile-with-rest-client-extension-add-on
Usando o Profile do Chrome no Selenium do Python (stack overflow)
https://stackoverflow.com/questions/45651879/using-selenium-how-to-keep-logged-in-after-closing-driver-in-python
Usando o Profile do Chrome no Selenium do Python (reddit)
https://www.reddit.com/r/learnpython/comments/79fe5j/cant_save_the_session_of_whatsapp_web_with/