Skip to content

Instantly share code, notes, and snippets.

@suparnashal
Created April 22, 2021 19:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suparnashal/41eaa4f413ee494a9e6f0ded4d9b0167 to your computer and use it in GitHub Desktop.
Save suparnashal/41eaa4f413ee494a9e6f0ded4d9b0167 to your computer and use it in GitHub Desktop.
Clear cache on Chrome browser with TimeRange = All Time using C# and selenium
public static void ClearBrowserCache(this IWebDriver webDriver)
{
webDriver.Navigate().GoToUrl("chrome://settings/clearBrowserData");
// begin identify clear data button via nested Shadow Dom elements
// get 1st parent
IWebElement root1 = webDriver.ByCssSelector("settings-ui");
// get 1st shadowroot element
IWebElement shadowRoot1 = root1.getShadowRootElement();
// get 2nd parent
IWebElement root2 = shadowRoot1.FindElement(By.CssSelector("settings-main"));
// get 2nd shadowroot element
IWebElement shadowRoot2 = root2.getShadowRootElement();
// get 3rd parent
IWebElement root3 = shadowRoot2.FindElement(By.CssSelector("settings-basic-page"));
// get 3rd shadowroot element
IWebElement shadowRoot3 = root3.getShadowRootElement();
// get 4th parent
IWebElement root4 = shadowRoot3.FindElement(By.CssSelector("settings-section > settings-privacy-page"));
// get 4th shadowroot element
IWebElement shadowRoot4 = root4.getShadowRootElement();
// get 5th parent
IWebElement root5 = shadowRoot4.FindElement(By.CssSelector("settings-clear-browsing-data-dialog"));
Thread.Sleep(100);
// get 5th shadowroot element
IWebElement shadowRoot5 = root5.getShadowRootElement();
// get 6th parent
IWebElement root6 = shadowRoot5.FindElement(By.CssSelector("#clearBrowsingDataDialog"));
SelectTimeRangeAll(root6);
// get button (finally!)
IWebElement clearDataButton = root6.FindElement(By.CssSelector("#clearBrowsingDataConfirm"));
// end identify clear data button via nested Shadow Dom elements
clearDataButton.Click(); // click that hard to reach button!
Thread.Sleep(2000);
}
public static void SelectTimeRangeAll(IWebElement root)
{
IWebElement root1 = root.FindElement(By.CssSelector("iron-pages#tabs"));
// IWebElement shadowRoot1 = root1.getShadowRootElement();
IWebElement root2 = root1.FindElement(By.CssSelector("settings-dropdown-menu#clearFromBasic"));
IWebElement shadowRoot2 = root2.getShadowRootElement();
IWebElement ddnTimeRange = shadowRoot2.FindElement(By.CssSelector("select#dropdownMenu"));
SelectElement selectTimeRange = new SelectElement(ddnTimeRange);
selectTimeRange.SelectByValue("4");
}
public static IWebElement getShadowRootElement(this IWebElement element)
{
IWebDriver driver = ((IWrapsDriver)element).WrappedDriver;
IJavaScriptExecutor js = driver as IJavaScriptExecutor;
IWebElement ele = (IWebElement)js.ExecuteScript("return arguments[0].shadowRoot", element);
return ele;
}
@suparnashal
Copy link
Author

This is first version of code to clear cache.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment