7

当我们写这样的东西时:

FirefoxProfile ffprofile = new FirefoxProfile(new File("D:\\Selenium"));

这是否意味着我们正在创建一个新的个人资料?因为我将无法在 Firefox 配置文件部分找到任何新配置文件。

所以现在我的问题是,如何为 Firefox 浏览器创建新的配置文件?

4

5 回答 5

7

您所说的方法调用只是从给定的配置文件信息目录创建一个 java 配置文件对象,然后通过 WebDriver 实例将其传递给 Firefox。

为了让 Firefox 持久保存您的驱动程序并使其可从配置文件管理器中使用,您需要在我的(Windows 7)机器上编辑文件 profiles.ini,该文件位于:

%APPDATA%\Roaming\Mozilla\Firefox

此文件夹中的 Profiles 目录包含现有 Firefox 配置文件的存储,当您想使用现有配置文件作为新配置文件的模板时,复制这些配置文件非常方便。

您的里程可能会因您的操作系统而异,但我相信您可以通过快速搜索找到它。使用您的示例,然后将以下内容添加到此文件中(其中标题中的 N 是下一个未使用的配置文件编号):

[ProfileN]
Name=selenium
IsRelative=0
Path=D:\Selenium

这将导致 Firefox 配置文件管理器加载配置文件,然后允许您使用此配置文件手动启动 Firefox 以配置或测试它,我认为这是您想要做的。

以这种方式创建命名配置文件后,您可以将其分配给 Selenium 中的驱动程序,如下所示:

ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("selenium");
WebDriver driver = FirefoxDriver(profile);

其中“selenium”与profiles.ini 文件中的Name 属性相同。

于 2013-12-18T16:48:43.540 回答
3

您不能使用 Selenium 为 Firefox 创建配置文件。您可以做的是从 firefox 中的可用配置文件为您的 webdriver 创建一个 firefox 配置文件。Firefox 配置文件的词在这里听起来有点模棱两可。

要在浏览器中创建 firefox 配置文件,请参阅Mozilla 支持页面了解详细信息。

于 2014-05-22T07:31:00.593 回答
2

以下代码将创建 firefox 配置文件(基于提供的文件)并创建一个新的 FF webdriver 实例并加载此配置文件:

FirefoxProfile profile = new FirefoxProfile(new File("D:\\Selenium Profile"));                  
WebDriver driver = new FirefoxDriver(profile);

也许可以查看 FF 配置文件管理器的官方支持页面或此处:Selenium 的自定义 Firefox 配置文件以了解有关 FF 配置文件的一些想法。

于 2013-10-09T14:02:52.800 回答
2

以下是我使用 geckodriver 使用 selenium 3 的方法:

  • 使用 firefox 命令行界面创建配置文件

    firefox.exe -CreateProfile "profile_name profile_dir" (在 java 中,通过 Runtime.getRuntime().exec 函数执行此运行时)

  • 在 Firefox 选项中设置 -profile 参数

    FirefoxOptions options = new FirefoxOptions();
    options.addArguments("-profile", <profile_dir>);
    driver = new FirefoxDriver(options);
    
于 2017-12-11T07:32:28.563 回答
-2

在 Firefox 浏览器中创建配置文件。

这是使用新创建的 Firefox 配置文件的代码。

ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("firefox profile name");
WebDriver driver = new FirefoxDriver(myprofile);
于 2016-04-27T05:02:54.803 回答