当前位置: 首页 > 知识库问答 >
问题:

如何在gecko驱动中永久安装扩展

林子石
2023-03-14

我需要使用扩展测试Firefox。我想自动化测试并访问几个网站。

我安装了Selenium,它在geckodriver中打开。然而,扩展并不存在。我可以从about:debug手动安装它,但问题是我希望Selenium测试在扩展已经存在时启动gecko驱动程序。怎么做?如何在geckodriver中永久安装扩展,这样当我从selenium启动geckodriver时它就在那里了?

编辑:我也试着从火狐扩展网站安装扩展(添加到浏览器)。它被添加,但是一旦我关闭壁虎窗口,扩展在下一次运行中消失。如何永久安装它?

共有3个答案

司马宏邈
2023-03-14

您可以在特定的Firefox配置文件中永久安装扩展/插件并使用它。要实现这一点,您需要遵循以下提到的步骤:

>

  • 您需要按照在Windows上创建新的Firefox配置文件的说明手动创建一个新的Firefox配置文件(例如FirefoxExtensionProfile)。
  • 手动打开Firefox浏览会话并调用urlhttps://addons.mozilla.org/en-US/firefox/
  • 在搜索框中搜索扩展,例如HTTPS无处不在。
  • 点击搜索结果并安装/启用(incase以前已安装且当前已禁用)扩展。
  • 现在您可以使用以下Java解决方案打开Firefox Profile FirefoxExtensionProfile包含扩展HTTPS无处不在

    >

    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");
        }
    }
    

    浏览器快照:

    你可以在以下网站上找到一些相关的讨论:

    • [Python]如何使用Python在selenium中加载chrome驱动程序中的扩展
    • [Python]如何在geckodriver中永久安装扩展

  • 夏侯俊美
    2023-03-14

    您需要通过指定firefox的配置文件路径来使用现有配置文件启动geckdriver

    对于python,可以通过以下方式实现:

    profile = FirefoxProfile('/home/student/.mozilla/firefox/gwi6uqpe.Default') // change this path
    browser = webdriver.Firefox(firefox_profile=profile)
    

    对于C#你可以这样做:

    string path = @"C:\Users\username\AppData\Local\Mozilla\Firefox\Profiles\myi5go1k.default";
    FirefoxProfile ffprofile = new FirefoxProfile(path);
    Driver = new FirefoxDriver(ffprofile);
    
    江礼骞
    2023-03-14

    注意:OP没有指定语言,所以这个答案是针对Python的。其他Selenium WebDriver语言绑定具有类似的机制,用于创建配置文件和添加扩展。

    每次实例化驱动程序时,都可以安装扩展。

    首先,下载你想要的扩展(XPI文件)从:https://addons.mozilla.org.

    然后,在您的代码中...创建一个FirefoxProfile()并使用add_extension()方法添加扩展。然后您可以使用该配置文件实例化驱动程序。

    例如,这将启动带有新创建的包含“HTTPS无处不在”扩展的配置文件的Firefox:

    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) 
    
     类似资料:
    • 问题内容: 我有一个Flask项目,已将flask模块(0.9版)直接放在我的app.py文件旁边。我这样做是为了将所有内容捆绑到一个版本控制存储库中,该存储库不需要其他人使用它来安装其他Python模块。 我想使用,所以我尝试通过下载最新版本并将文件放在我的“本地” flask / ext /目录中来手动安装它。然而,尽管我可以和,我无法import flask.ext.login与Python

    • 我只是按照这里投票最多的答案,成功地在我的终端中安装了Visual Studio Code的命令。 但是,每次重启MacBook Pro后,命令都无法启动Visual Studio Code。 是否可以永久安装,这样我就不必每次打开MacBook Pro时都安装它? 我还发现文件夹在我重启笔记本电脑后被删除。 这就是笔记本电脑重启后我无法运行的原因。 为什么将安装在临时文件夹中? 我的MacBoo

    • 我已经安装了mongodb,我可以通过终端访问它。我想在OSX(约塞米蒂)中安装XAMPP的驱动程序。我下载了mongo。因此,将其保存在/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226路径下,该路径是我的扩展名指向并写入的extension=mongo。所以在php中。这是一个文件,但没有运气。

    • 问题内容: 我正在尝试从 Raspberry Pi 上的 Android Things 应用的USB驱动器中读取文件。我可以像这样扫描已安装设备的列表: __ 显示以下输出: 但是,我的拇指驱动器不在列表中。所以我想我需要以某种方式安装它。如何安装拇指驱动器并访问其中的文件? 问题答案: 仅亚行解决方案 到目前为止,USB驱动器似乎尚未自动安装。为了使您的代码正常工作,我必须手动安装它。 如您所见

    • 我想在我的活动中永久隐藏导航栏(而不是整个系统ui)。现在我正在使用这段代码 它隐藏栏,但是当用户触摸屏幕时,它会再次显示。有没有办法永久隐藏它,直到活动;

    • 问题内容: 我正在运行RHEL6,并且已经导出了如下环境变量: 当终端关闭时,该变量丢失。如何永久添加此变量,以便特定用户始终可以使用此变量值? 问题答案: 您可以将其添加到您的Shell配置文件中,例如,或在全局中添加。添加这些行之后,更改将不会立即反映在基于GUI的系统中,您必须退出终端或创建一个新终端,然后在服务器中注销会话并登录以反映这些更改。