I've seen (and actually answered) several selenium-specific questions where there is a need to set some particular browser preference to change it's behavior, for example:
- How to deal with certificates using Selenium?
- How can I add profile preferences to Chrome for Selenium Grid 2 in C#?
- how to disable cookies using webdriver for Chrome and FireFox JAVA
- Possible to disable firefox and chrome default caching?
In other words, there are tons of questions which can be grouped in two types:
- I know how to set this preference in browser X, how to do the same in browser Y?
- How to make browser X, Y and Z do something by configuring their preferences?
This is usually done via setting/configuring:
FirefoxProfile
for FirefoxChromeOptions
for ChromeDesiredCapabilities
for Internet Explorer
What is a preferred and most efficient strategy to find browser-specific solutions for a particular problem? Is there a mapping between preferences across major browsers?
For example, I've found out that to disable cache in Firefox, I can set browser.cache.disk.enable
, browser.cache.memory.enable
, browser.cache.offline.enable
and
network.http.use-cache
preferences to false
. How can I know how to do the same in Chrome and IE?
To highlight what I mean will crunch down Wikipedia article to 1 sentence :
What is a preferred and most efficient strategy to find browser-specific solutions for a particular problem?
Rather try to think it this way: If particular browser implements a feature then there is a good chance that selenium driver exposes it. You know if feature is implemented if you can solve it manually.
I decently effective problem solving algorithm for you:
CS || RTM || UTSL
Image is from Jeff Atwood blog post.
Is there a mapping between preferences across major browsers?
No, preferences are not consolidated across drivers. Drivers have their specifics and tradeoffs.
Different browsers or even browser versions support different sets of capabilities. Some of them lack even common things. Some of those features are covered by selenium in order for it to provide basic functionality that it has. Example of this would be older IE does not support xPath and Selenium has to simulate this behavior. You can not make assumption it adds behavior to take account for every quirk in every browser to create a common platform (that would be a wicked problem).
I suggest you read Wicked problem : Strategies to tackle wicked problems.
Knowing how to disable cache in Firefox, how can I know how to do the same in ...?
To do same in chrome you could run chrome driver with
--disable-application-cache
argument. To see what flags your current Chrome can set you can browse tochrome://flags/
inside chrome. Alternative way would be to look up available source.Alternative name for IE would be mother lode of quirks. This is where you need to do research. One way would be to call
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess nr
Where nr is flag field:
This source claims that as of May 2013 IE might have desiredCapabilities.ensureCleanSession to clear cache, however I have not tested it.