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