Remote webdriver - Passing firefox profile with Rest Client Extension (add-on)

LearningSnippet picture LearningSnippet · May 17, 2013 · Viewed 16.7k times · Source

Currently I am able to send a firefox profile over a RemoteWebDriver, but I am not able to send the RestCLient extension over the profile. I require a certain REST client extension(firefox add-on) to be available for my test case execution.

If I run the test case locally using firefox driver it works....but how do I achieve the same thing using RemoteWebDriver?

 File profileDirectory = new File("c://mach//lib//prof");
 FirefoxProfile profile = new FirefoxProfile(profileDirectory);
 driver = new FirefoxDriver(profile);
 driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

Cheers

Answer

Rob W picture Rob W · Jun 10, 2013

After creating a FirefoxProfile instance, transfer the profile using the DesiredCapabilities API (FirefoxDriver.PROFILE = "firefox_profile"):

File profileDirectory = new File("c://mach//lib//prof");
FirefoxProfile profile = new FirefoxProfile(profileDirectory);

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

Note: You don't have to create a profile in advance, the FirefoxProfile API offers several convenient methods ("Method Summary" section) to compose a profile. For instance, if you want to launch Firefox with an extension pre-installed, use:

FirefoxProfile firefoxProfile = new FirefoxProfile();
File extension = new File("extension.xpi");
firefoxProfile.addExtension(extension);

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(FirefoxDriver.PROFILE, firefoxProfile);
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

Documentation for working with the remote web driver: