Muthu
Muthu

Reputation: 487

retaining cache in firefox and chrome browser - Selenium WebDriver

Currently our web application takes around 3 mins to load completely without caching and 10 secs with caching. When I open the app through WebDriver its taking around 3 mins to load i.e. caching is not used. I observed this on Firefox and Chrome browser. Not sure how to enabled the driver to use cache instead of loading each file from server every time I open the app.

Here are the things I tried. 1. disabled clearing cache on browser exit in browser setting. 2. set 'applicationCacheEnabled' desiredcapabilitiy to 'true'

DesiredCapabilities cap = DesiredCapabilities.firefox();

cap.setCapability("applicationCacheEnabled", "true");

WebDriver d = new FirefoxDriver(cap)

But nothing seems to work. Please let me know how can I make webdriver to use caching.

Upvotes: 18

Views: 26203

Answers (2)

Sudheer Singh
Sudheer Singh

Reputation: 664

@CacheLookup annotations can be very useful for the elements that do not change on the web page once loaded. These types of elements constitute a majority of elements on the web page. So for those elements, as they will not change during test execution, you should use the @Cachelookup annotation to improve the test speed.

Try below codes:

@FindBy(name="username")
@CacheLookup
private WebElement userName;

Upvotes: 0

Thorben
Thorben

Reputation: 973

The problem is, that selenium copies every startup a new (firefox/chrome) profile to the temp directory and starts firefox/chrome with it. However, it is possible to always use the same profile for your test instances. I think this way you can get it working faster.

For firefox you just need to do these steps:
1. Load your webapp in a selenium firefox instance and don't close it afterwards (not driver.close();).
2. Then go to Help->Troubleshooting Information and open the folder under Profile folder.
3. Copy its content to a new folder near your test code.
4. Load the saved Profile in your test code. You can do it this way:

FirefoxProfile profile = new FirefoxProfile(new File("profile/folder/path"));                  
WebDriver driver = new FirefoxDriver(profile); 

I think you can do this in chrome analogous.

Upvotes: 8

Related Questions