Looks like in Chrome v86 third-party cookies disabled by default: Chromium SameSite Updates.
I found a workaround to enable third-party cookies on the browser new tab start page (I'm using inputsimulator library to open a new tab because other methods do not open the appropriate page).
Here is C# code for IWebDriver extension:
using WindowsInput;
using WindowsInput.Native;
public static void EnableThirdPartyCookies(this IWebDriver driver)
{
var windowHandles = driver.WindowHandles;
// Activate Browser window
driver.SwitchTo().Window(driver.WindowHandles.Last());
// Open New Tab Ctrl + T
new InputSimulator().Keyboard.ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_T);
// Wait for open new tab
const int retries = 100;
for (var i = 0; i < retries; i++)
{
Thread.Sleep(100);
if (driver.WindowHandles.Count > windowHandles.Count)
break;
}
// Enable Third Party Cookies
if (driver.WindowHandles.Count > windowHandles.Count)
{
driver.Close();
driver.SwitchTo().Window(driver.WindowHandles.Last());
var selectedCookieControlsToggle = driver.FindElements(By.Id("cookie-controls-toggle"))
.FirstOrDefault(x => x.GetAttribute("checked") != null);
selectedCookieControlsToggle?.Click();
}
}
Using:
var chromeService = ChromeDriverService.CreateDefaultService();
var options = new ChromeOptions { };
options.AddArgument("–no-sandbox");
options.AddArgument("-incognito");
options.AddArgument("-start-maximized");
var driver = new ChromeDriver(chromeService, options);
driver.EnableThirdPartyCookies();
Here is Java code:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public void enableThirdPartyCookies(WebDriver driver) throws Exception {
ArrayList<String> windowHandles = new ArrayList<String> (driver.getWindowHandles());
// Activate Browser window
driver.switchTo().window(driver.getWindowHandle());
// Open New Tab Ctrl + T
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_CONTROL);
// Wait for open new tab
int retries = 100;
for (int i = 0; i < retries; i++)
{
Thread.sleep(100);
if (driver.getWindowHandles().size() > windowHandles.size())
break;
}
// Enable Third Party Cookies
if (driver.getWindowHandles().size() > windowHandles.size())
{
driver.close();
windowHandles = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(windowHandles.get(windowHandles.size() - 1));
List list = driver.findElements(By.id("cookie-controls-toggle"));
Optional<WebElement> selectedCookieControlsToggle = driver.findElements(By.id("cookie-controls-toggle")).stream()
.filter(x -> x.getAttribute("checked") != null).findFirst();
Optional.ofNullable(selectedCookieControlsToggle).get().get().click();
}
}
Using:
ChromeOptions options = new ChromeOptions();
options.addArguments("–no-sandbox");
options.addArguments("incognito");
options.addArguments("start-maximized");
WebDriver driver = new ChromeDriver(options);
enableThirdPartyCookies(driver);