如何使用Selenium WebDriver在Firefox中创建个人资料

7
当我们写这样的内容时:
FirefoxProfile ffprofile = new FirefoxProfile(new File("D:\\Selenium"));

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

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

5个回答

7
您所述的方法调用简单地从给定的配置文件目录创建一个java配置文件对象,然后将其通过WebDriver实例传递给Firefox。
为了使Firefox始终保留您的驱动程序并使其可从配置文件管理器中使用,您需要编辑profiles.ini文件。在我的Windows 7机器上,它位于以下位置:
%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属性相同。


1
ProfilesIni 是如何知道路径的?我们只是提供名称...因为 profiles.ini 的路径因系统而异。 - Lokesh Sanapalli
Selenium Firefox驱动程序实现了针对您特定系统安装的Firefox查找profiles.ini文件的功能。然后,您可以在profiles.ini中定义存储配置文件数据的路径,并将其配置为在系统上的任何位置。 - Dave Birch
getProfile函数创建给定个人资料的副本。因此,在此个人资料中运行不会像普通个人资料一样存储值(例如,记住密码无法工作等)。 - Loc Phan
profile.ini 的正确路径为 %APPDATA%\Mozilla\Firefox。APPDATA 已经包含 \Roaming - Daniel Alder

3
您无法使用Selenium创建Firefox配置文件。您可以从Firefox中的可用配置文件为webdriver创建Firefox配置文件。这里的Firefox配置文件单词听起来有点模糊。
要在浏览器中创建Firefox配置文件,请参考Mozilla支持页面获取详细信息。

2
以下代码将创建一个基于提供的文件的Firefox配置文件,并使用此配置文件加载一个新的FF webdriver实例:
FirefoxProfile profile = new FirefoxProfile(new File("D:\\Selenium Profile"));
WebDriver driver = new FirefoxDriver(profile);

也许可以查看官方支持页面了解FF配置文件管理器的相关信息,或者在这里:Selenium自定义Firefox配置文件获取关于FF配置文件的一些想法。

1
我已经使用了上述代码,但是当我使用“firefox.exe -ProfileManager -no-remote”命令搜索新配置文件时,它不会显示任何新配置文件。 - Niyati

2

以下是我使用Selenium 3和Geckodriver的步骤:

  • Use firefox command line interface to create profile

    firefox.exe -CreateProfile "profile_name profile_dir" (In java, execute this runtime by Runtime.getRuntime().exec function)

  • Set -profile argument in firefox options

    FirefoxOptions options = new FirefoxOptions();
    options.addArguments("-profile", <profile_dir>);
    driver = new FirefoxDriver(options);
    

很高兴了解这个。看起来这是一个不错的途径,可以通过编程方式创建和设置Firefox的新配置文件。这可能是解决Firefox驱动程序无法处理代理身份验证对话框的解决方案。它没有实现HasCredentials接口,这会防止代理身份验证对话框在使用driver.get(url)时出现。当此对话框出现时,Selenium会抛出异常。我尝试使用sendKeys填写用户名和密码,但它会抛出另一个异常,说对话框身份验证不支持发送键。 - cavila

-2

在Firefox浏览器中创建个人资料。

这是使用新创建的Firefox个人资料的代码。

ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("firefox profile name");
WebDriver driver = new FirefoxDriver(myprofile);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接