J'ai besoin de tester Firefox en utilisant une extension. Je souhaite automatiser le test et visiter plusieurs sites Web.
J'ai installé Selenium et il s'ouvre dans geckodriver
. Cependant, l'extension n'est pas là. Je peux l'installer manuellement depuis about: debugging
mais le problème est que je veux que le test Selenium lance le pilote gecko alors que l'extension est déjà là. Comment faire cela? Comment installer l'extension de façon permanente dans le geckodriver
pour qu'elle soit là quand je lance le geckodriver
depuis le sélénium?
MODIFIER: J'ai également essayé d'installer l'extension (ajoutez-la au navigateur) à partir des sites Web des extensions Firefox. Il est ajouté mais une fois que je ferme la fenêtre gecko, l'extension disparaît à la prochaine exécution. Comment l'installer définitivement?
3 Réponses :
Vous devez lancer geckdriver avec un profil existant en spécifiant le chemin du profil de firefox
Pour python, vous pouvez le faire par ceci:
string path = @"C:\Users\username\AppData\Local\Mozilla\Firefox\Profiles\myi5go1k.default"; FirefoxProfile ffprofile = new FirefoxProfile(path); Driver = new FirefoxDriver(ffprofile);
Pour C #, vous pouvez faites ceci:
profile = FirefoxProfile('/home/student/.mozilla/firefox/gwi6uqpe.Default') // change this path browser = webdriver.Firefox(firefox_profile=profile)
Merci. Pouvez-vous me donner étape par étape? J'ai installé l'extension dans Firefox Developer Edition. L'édition développeur de Firefox se trouve dans ce chemin sur mon appareil: /home/xx/Documents/ff_extension/firefox/firefox.exe
. où puis-je trouver le chemin d'accès au profil par défaut de Firefox Developer Edition? Je ne trouve rien.
Je l'ai testé. j'obtiens cette erreur: NameError: le nom «FirefoxProfile» n'est pas défini
. J'ai également essayé d'ajouter cette ligne mais je n'ai pas résolu le problème: de selenium.webdriver.firefox.firefox_binary import FirefoxProfile
Je ne sais vraiment pas où l'édition Developer conserve ses profils
Regardez ce lien
Remarque: OP n'a pas spécifié de langue, donc cette réponse est pour Python. Les autres liaisons de langage Selenium WebDriver ont des mécanismes similaires pour créer des profils et ajouter des extensions.
Vous pouvez installer l'extension à chaque fois que vous instanciez le pilote.
D'abord, téléchargez l'extension (Fichier XPI) de votre choix: https://addons.mozilla.org .
Ensuite, dans votre code ... créez un FirefoxProfile ()
et utilisez la méthode add_extension ()
pour ajouter l'extension. Ensuite, vous pouvez instancier un pilote utilisant ce profil.
Par exemple, cela lancera Firefox avec un profil nouvellement créé contenant l'extension "HTTPS Everywhere":
from selenium import webdriver profile = webdriver.FirefoxProfile() profile.add_extension(extension='https_everywhere-2019.1.31-an+fx.xpi') driver = webdriver.Firefox(firefox_profile=profile)
Vous pouvez installer une extension / addon de manière permanente dans un profil Firefox spécifique et l'utiliser. Pour y parvenir, vous devez suivre les étapes mentionnées ci-dessous:
https://addons.mozilla.org/en-US/firefox/
Vous pouvez maintenant utiliser la solution Java suivante pour ouvrir le profil Firefox FirefoxExtensionProfile contenant l'extension HTTPS Everywhere
Bloc de code:
package A_MozillaFirefox; 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 A_FirefoxProfile_dc_opt { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe"); ProfilesIni profile = new ProfilesIni(); FirefoxProfile testprofile = profile.getProfile("FirefoxExtensionProfile"); FirefoxOptions opt = new FirefoxOptions(); opt.setProfile(testprofile); WebDriver driver = new FirefoxDriver(opt); driver.get("https://www.google.com"); } }
Instantané du navigateur:
Vous pouvez trouver quelques discussions pertinentes dans: