Selenium WebDriver默认使用什么配置文件?

时间:2012-08-20 01:09:30

标签: firefox selenium selenium-webdriver

Selenium WebDriver(a.k.a Selenium 2)在打开FirefoxDriver时会获得它使用的匿名配置文件?如果它使用Firefox的默认值,%appdata%/ roaming / mozilla / firefox / profiles,那么如果我要禁用firefox插件,它也应该对Selenium WebDriver禁用,那么为什么不呢?

4 个答案:

答案 0 :(得分:21)

我会回答它,支持来自@twall的评论:当在Selenium 2 WebDriver中启动firefox时,它会启动新的匿名配置文件。

但是,如果你想改变它,你可以create new Firefox profile并以某种方式命名,你知道它是什么 - 例如SELENIUM

然后在你的代码中执行以下操作:

 ProfilesIni profile = new ProfilesIni();
 FirefoxProfile ffprofile = profile.getProfile("SELENIUM");
 WebDriver driver = new FirefoxDriver(ffprofile);

这样,Firefox将始终启动该配置文件。在配置文件中,您可以执行所需的所有设置

答案 1 :(得分:5)

您可以为每个Selenium grid 2节点分配一个特定的firefox配置文件:

  

java -jar selenium-server-standalone-2.37.0.jar    -Dwebdriver.firefox.profile = my-profile -role node -hub http://example-server.org:4444/grid/register

请注意,webdriver.firefox.profile的值必须是 firefox配置文件名称,而不是位置或文件夹名称

答案 2 :(得分:2)

在测试服务器上运行webdriver而没有在计算机上创建配置文件的选项时,您可以以编程方式创建配置文件:

private FirefoxProfile GetFirefoxProfile()
{
    FirefoxProfile firefoxProfile = new FirefoxProfile();
    firefoxProfile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "http://localhost");
    return firefoxProfile;
}

答案 3 :(得分:1)

获取配置文件没有用,因为它在内部创建了获取的命名配置文件的另一个副本。如果是,则需要访问原始配置文件 例如:测试覆盖率数据应跨多个调用写入数据存储。

这是通过覆盖Selenium的ProfilesIni类

的可能解决方案

首先使用firefox -p创建自定义配置文件,例如“CustomSeleniumProfile”

ProfilesIni profileini = new ProfilesIni() {
    @Override
    public FirefoxProfile getProfile(String profileName) {
            File appData = locateAppDataDirectory(Platform.getCurrent());
            Map<String, File> profiles = readProfiles(appData);
            File profileDir = profiles.get(profileName);
            if (profileDir == null)
              return null;
            return new FirefoxProfile(profileDir);
     }
};
FirefoxProfile profile = profileini.getProfile("CustomSeleniumProfile");
//profile.setEnableNativeEvents(false);

driver = new FirefoxDriver(profile);
//ffDriver.manage().deleteAllCookies();
driver.get("http://www.google.com");