Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firefox profile preferences vs Chrome options vs IE desired capabilities

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 Firefox
  • ChromeOptions for Chrome
  • DesiredCapabilities 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?

like image 750
alecxe Avatar asked Sep 11 '14 01:09

alecxe


People also ask

What is the difference between Chrome options and desired capabilities?

Summary: Selenium Chrome Options class is used to manipulate various properties of Chrome driver. Desired Chrome Capabilities class provides a set of key-value pairs to modify individual properties of web driver such as browser name, browser platform, etc.

What can I use instead of desired capabilities in Selenium?

ChromeOptions is another class that can be used in conjunction with Desired Capabilities in Selenium WebDriver for Chrome to customize or manipulate the various properties of Chrome browser.

What is desired capabilities in Selenium for Chrome?

The setCapability method of the DesiredCapabilities Class, which is explained in the later part of the tutorial, can be used in Selenium Grid. It is used to perform a parallel execution on different machine configurations. It is used to set the browser properties (Ex. Chrome, IE), Platform Name (Ex.


1 Answers

To highlight what I mean will crunch down Wikipedia article to 1 sentence :

Selenium WebDriver ... is implemented through a browser-specific browser driver, which ... aims to provide a basic set of building blocks from which developers can create their own Domain Specific Language.

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

  1. [CS] Can you solve problem manually? Try to use same steps.
  2. [RTM] Can you find the manual or example? Chances are that others have solved you problem.
  3. [UTSL] If common sense and RTM did not work, then
    • Manual can tell you how stuff should work.
    • Source can tell you how stuff does work.

enter image description here 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 to chrome://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:

  • 255 (Deletes ALL History)
  • 1 (Deletes History Only)
  • 2 (Deletes Cookies Only)
  • 8 (Deletes Temporary Internet Files Only)
  • 16 (Deletes Form Data Only)
  • 32 (Deletes Password History Only)

This source claims that as of May 2013 IE might have desiredCapabilities.ensureCleanSession to clear cache, however I have not tested it.

like image 91
Margus Avatar answered Sep 17 '22 14:09

Margus