2
votes

Comment installer l'extension de manière permanente dans geckodriver

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?


0 commentaires

3 Réponses :


4
votes

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)


4 commentaires

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



5
votes

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) 


0 commentaires

1
votes

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:

  • Vous devez créer un nouveau profil Firefox manuellement (par exemple, FirefoxExtensionProfile ) en suivant les instructions sur Création d'un nouveau profil Firefox sous Windows .
  • Ouvrez une session Navigation Firefox manuellement et appelez l'url https://addons.mozilla.org/en-US/firefox/
  • Dans le Champ de recherche , recherchez une extension, par exemple HTTPS partout .
  • Cliquez sur le résultat de la recherche et installez / activez (dans le cas où elle était déjà installée et actuellement désactivée) l'extension.
  • 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:

Extension_HTTPS Everywhere


Référence

Vous pouvez trouver quelques discussions pertinentes dans:


0 commentaires