Working with cookies

A cookie is a small piece of data that is sent from a website and stored in your computer. Cookies are mostly used to recognise the user and load the stored information.

WebDriver API provides a way to interact with cookies with built-in methods:

It is used to add a cookie to the current browsing context. Add Cookie only accepts a set of defined serializable JSON object. Here is the link to the list of accepted JSON key values

First of all, you need to be on the domain that the cookie will be valid for. If you are trying to preset cookies before you start interacting with a site and your homepage is large / takes a while to load an alternative is to find a smaller page on the site (typically the 404 page is small, e.g. http://example.com/some404page)

Move Code

 driver.get("https://www.selenium.dev/selenium/web/blank.html");  // Add cookie into current browser context  driver.manage().addCookie(new Cookie("key", "value"));
 driver = webdriver.Chrome()  driver.get("http://www.example.com")   # Adds the cookie into current browser context  driver.add_cookie({"name": "key", "value": "value"})
 driver.Url="https://www.selenium.dev/selenium/web/blank.html";  // Add cookie into current browser context  driver.Manage().Cookies.AddCookie(new Cookie("key", "value"));
 driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'  # Add cookie into current browser context  driver.manage.add_cookie(name: 'key', value: 'value')
 await driver.get('https://www.selenium.dev/selenium/web/blank.html');
import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver  fun main() {  val driver = ChromeDriver()  try {  driver.get("https://example.com")   // Adds the cookie into current browser context  driver.manage().addCookie(Cookie("key", "value"))  } finally {  driver.quit()  } }  

It returns the serialized cookie data matching with the cookie name among all associated cookies.

Move Code

 driver.get("https://www.selenium.dev/selenium/web/blank.html");  // Add cookie into current browser context  driver.manage().addCookie(new Cookie("foo", "bar"));  // Get cookie details with named cookie 'foo'  Cookie cookie = driver.manage().getCookieNamed("foo");
 driver = webdriver.Chrome()  driver.get("http://www.example.com")   # Adds the cookie into current browser context  driver.add_cookie({"name": "foo", "value": "bar"})   # Get cookie details with named cookie 'foo'  print(driver.get_cookie("foo"))
 driver.Url = "https://www.selenium.dev/selenium/web/blank.html";  // Add cookie into current browser context  driver.Manage().Cookies.AddCookie(new Cookie("foo", "bar"));  // Get cookie details with named cookie 'foo'  Cookie cookie = driver.Manage().Cookies.GetCookieNamed("foo");
 driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'  # Add cookie into current browser context  driver.manage.add_cookie(name: 'foo', value: 'bar')  # Get cookie details with named cookie 'foo'  cookie = driver.manage.cookie_named('foo')
 // set a cookie on the current domain  await driver.manage().addCookie({ name: 'foo', value: 'bar' });   // Get cookie details with named cookie 'foo' 
import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver  fun main() {  val driver = ChromeDriver()  try {  driver.get("https://example.com")  driver.manage().addCookie(Cookie("foo", "bar"))   // Get cookie details with named cookie 'foo'  val cookie = driver.manage().getCookieNamed("foo")  println(cookie)  } finally {  driver.quit()  } }  

Get All Cookies

It returns a ‘successful serialized cookie data’ for current browsing context. If browser is no longer available it returns error.

Move Code

 driver.get("https://www.selenium.dev/selenium/web/blank.html");  // Add cookies into current browser context  driver.manage().addCookie(new Cookie("test1", "cookie1"));  driver.manage().addCookie(new Cookie("test2", "cookie2"));  // Get cookies  Set<Cookie> cookies = driver.manage().getCookies();  for (Cookie cookie : cookies) {  if (cookie.getName().equals("test1")) {  Assertions.assertEquals(cookie.getValue(), "cookie1");  }   if (cookie.getName().equals("test2")) {  Assertions.assertEquals(cookie.getValue(), "cookie2");  }  }
 driver = webdriver.Chrome()   driver.get("http://www.example.com")   driver.add_cookie({"name": "test1", "value": "cookie1"})  driver.add_cookie({"name": "test2", "value": "cookie2"})   # Get all available cookies  print(driver.get_cookies())
 driver.Url = "https://www.selenium.dev/selenium/web/blank.html";  // Add cookies into current browser context  driver.Manage().Cookies.AddCookie(new Cookie("test1", "cookie1"));  driver.Manage().Cookies.AddCookie(new Cookie("test2", "cookie2"));  // Get cookies  var cookies = driver.Manage().Cookies.AllCookies;  foreach (var cookie in cookies){  if (cookie.Name.Equals("test1")){  Assert.AreEqual("cookie1", cookie.Value);  }  if (cookie.Name.Equals("test2")){  Assert.AreEqual("cookie2", cookie.Value);  }  }
 driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'  # Add cookies into current browser context  driver.manage.add_cookie(name: 'test1', value: 'cookie1')  driver.manage.add_cookie(name: 'test2', value: 'cookie2')  # Get cookies  cookies = driver.manage.all_cookies
 await driver.manage().addCookie({ name: 'test2', value: 'cookie2' });   // Get all Available cookies 
import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver  fun main() {  val driver = ChromeDriver()  try {  driver.get("https://example.com")  driver.manage().addCookie(Cookie("test1", "cookie1"))  driver.manage().addCookie(Cookie("test2", "cookie2"))   // Get All available cookies  val cookies = driver.manage().cookies  println(cookies)  } finally {  driver.quit()  } }  

It deletes the cookie data matching with the provided cookie name.

Move Code

 driver.get("https://www.selenium.dev/selenium/web/blank.html");  driver.manage().addCookie(new Cookie("test1", "cookie1"));  // delete cookie named  driver.manage().deleteCookieNamed("test1");
 driver = webdriver.Chrome()   driver.get("http://www.example.com")   driver.add_cookie({"name": "test1", "value": "cookie1"})  driver.add_cookie({"name": "test2", "value": "cookie2"})   # Delete cookie with name 'test1'  driver.delete_cookie("test1")
 driver.Url = "https://www.selenium.dev/selenium/web/blank.html";  driver.Manage().Cookies.AddCookie(new Cookie("test1", "cookie1"));  // delete cookie named  driver.Manage().Cookies.DeleteCookieNamed("test1");
 driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'  driver.manage.add_cookie(name: 'test1', value: 'cookie1')  # Delete cookie named  driver.manage.delete_cookie('test1')
 await driver.manage().addCookie({ name: 'test1', value: 'cookie1' });  await driver.manage().addCookie({ name: 'test2', value: 'cookie2' });
import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver  fun main() {  val driver = ChromeDriver()  try {  driver.get("https://example.com")  driver.manage().addCookie(Cookie("test1", "cookie1"))  val cookie1 = Cookie("test2", "cookie2")  driver.manage().addCookie(cookie1)   // delete a cookie with name 'test1'  driver.manage().deleteCookieNamed("test1")   // delete cookie by passing cookie object of current browsing context.  driver.manage().deleteCookie(cookie1)  } finally {  driver.quit()  } }  

Delete All Cookies

It deletes all the cookies of the current browsing context.

Move Code

 driver.get("https://www.selenium.dev/selenium/web/blank.html");  // Add cookies into current browser context  driver.manage().addCookie(new Cookie("test1", "cookie1"));  driver.manage().addCookie(new Cookie("test2", "cookie2"));  // Delete All cookies  driver.manage().deleteAllCookies();
 driver = webdriver.Chrome()   driver.get("http://www.example.com")   driver.add_cookie({"name": "test1", "value": "cookie1"})  driver.add_cookie({"name": "test2", "value": "cookie2"})   # Delete all cookies  driver.delete_all_cookies()
 driver.Url = "https://www.selenium.dev/selenium/web/blank.html";  // Add cookies into current browser context  driver.Manage().Cookies.AddCookie(new Cookie("test1", "cookie1"));  driver.Manage().Cookies.AddCookie(new Cookie("test2", "cookie2"));  // Delete All cookies  driver.Manage().Cookies.DeleteAllCookies();
 driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'  # Add cookies into current browser context  driver.manage.add_cookie(name: 'test1', value: 'cookie1')  driver.manage.add_cookie(name: 'test2', value: 'cookie2')  # Delete All cookies  driver.manage.delete_all_cookies
 await driver.manage().addCookie({ name: 'test1', value: 'cookie1' });  await driver.manage().addCookie({ name: 'test2', value: 'cookie2' });
import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver  fun main() {  val driver = ChromeDriver()  try {  driver.get("https://example.com")  driver.manage().addCookie(Cookie("test1", "cookie1"))  driver.manage().addCookie(Cookie("test2", "cookie2"))   // deletes all cookies  driver.manage().deleteAllCookies()  } finally {  driver.quit()  } }  

It allows a user to instruct browsers to control whether cookies are sent along with the request initiated by third party sites. It is introduced to prevent CSRF (Cross-Site Request Forgery) attacks.

Same-Site cookie attribute accepts two parameters as instructions

Strict:

When the sameSite attribute is set as Strict, the cookie will not be sent along with requests initiated by third party websites.

Lax:

When you set a cookie sameSite attribute to Lax, the cookie will be sent along with the GET request initiated by third party website.

Note: As of now this feature is landed in chrome(80+version), Firefox(79+version) and works with Selenium 4 and later versions.

Move Code

 driver.get("http://www.example.com");   Cookie cookie = new Cookie.Builder("key", "value").sameSite("Strict").build();  Cookie cookie1 = new Cookie.Builder("key", "value").sameSite("Lax").build();   driver.manage().addCookie(cookie);  driver.manage().addCookie(cookie1);   System.out.println(cookie.getSameSite());  System.out.println(cookie1.getSameSite());
 driver = webdriver.Chrome()   driver.get("http://www.example.com")   # Adds the cookie into current browser context with sameSite 'Strict' (or) 'Lax'  driver.add_cookie({"name": "foo", "value": "value", "sameSite": "Strict"})  driver.add_cookie({"name": "foo1", "value": "value", "sameSite": "Lax"})   cookie1 = driver.get_cookie("foo")  cookie2 = driver.get_cookie("foo1")   print(cookie1)  print(cookie2)
using OpenQA.Selenium; using OpenQA.Selenium.Chrome;  namespace SameSiteCookie {  class SameSiteCookie {  static void Main(string[] args) {  IWebDriver driver = new ChromeDriver();  try {  driver.Navigate().GoToUrl("http://www.example.com");   var cookie1Dictionary = new System.Collections.Generic.Dictionary<string, object>() {  { "name", "test1" }, { "value", "cookie1" }, { "sameSite", "Strict" } };  var cookie1 = Cookie.FromDictionary(cookie1Dictionary);   var cookie2Dictionary = new System.Collections.Generic.Dictionary<string, object>() {  { "name", "test2" }, { "value", "cookie2" }, { "sameSite", "Lax" } };  var cookie2 = Cookie.FromDictionary(cookie2Dictionary);   driver.Manage().Cookies.AddCookie(cookie1);  driver.Manage().Cookies.AddCookie(cookie2);   System.Console.WriteLine(cookie1.SameSite);  System.Console.WriteLine(cookie2.SameSite);  } finally {  driver.Quit();  }  }  } }  
require 'selenium-webdriver' driver = Selenium::WebDriver.for :chrome  begin  driver.get 'https://www.example.com'  # Adds the cookie into current browser context with sameSite 'Strict' (or) 'Lax'  driver.manage.add_cookie(name: "foo", value: "bar", same_site: "Strict")  driver.manage.add_cookie(name: "foo1", value: "bar", same_site: "Lax")  puts driver.manage.cookie_named('foo')  puts driver.manage.cookie_named('foo1') ensure  driver.quit end  
 it('Create cookies with sameSite', async function() {  await driver.get('https://www.selenium.dev/selenium/web/blank.html'); 
import org.openqa.selenium.Cookie import org.openqa.selenium.chrome.ChromeDriver  fun main() {  val driver = ChromeDriver()  try {  driver.get("http://www.example.com")  val cookie = Cookie.Builder("key", "value").sameSite("Strict").build()  val cookie1 = Cookie.Builder("key", "value").sameSite("Lax").build()  driver.manage().addCookie(cookie)  driver.manage().addCookie(cookie1)  println(cookie.getSameSite())  println(cookie1.getSameSite())  } finally {  driver.quit()  } }