private void DeleteCookieByPath(Cookie cookie) { Cookie toDelete = null; string path = cookie.Path; if (path != null) { string[] segments = cookie.Path.Split(new char[] { '/' }); StringBuilder currentPath = new StringBuilder(); foreach (string segment in segments) { if (string.IsNullOrEmpty(segment)) { continue; } currentPath.Append("/"); currentPath.Append(segment); toDelete = new NullPathCookie(cookie.Name, cookie.Value, cookie.Domain, currentPath.ToString(), DateTime.MinValue); RecursivelyDeleteCookieByDomain(toDelete); } } toDelete = new NullPathCookie(cookie.Name, cookie.Value, cookie.Domain, "/", DateTime.MinValue); RecursivelyDeleteCookieByDomain(toDelete); toDelete = new NullPathCookie(cookie.Name, cookie.Value, cookie.Domain, null, DateTime.MinValue); RecursivelyDeleteCookieByDomain(toDelete); }
/// <summary> /// Delete a cookie in the browser that is the. /// </summary> /// <param name="cookie">An object that represents a copy of the cookie that needs to be deleted.</param> public void DeleteCookie(Cookie cookie) { ////Uri currentUri = new Uri(driver.Url); ////DateTime dateInPast = DateTime.MinValue; ////AddCookie(new Cookie(cookie.Name, cookie.Value, currentUri.Host, currentUri.PathAndQuery, dateInPast)); if (cookie == null) { throw new WebDriverException("Cookie to delete cannot be null"); } string currentUrl = driver.Url; try { Uri uri = new Uri(currentUrl); Cookie toDelete = new NullPathCookie(cookie.Name, cookie.Value, uri.Host, uri.AbsolutePath, DateTime.MinValue); DeleteCookieByPath(toDelete); } catch (UriFormatException e) { throw new WebDriverException("Cannot delete cookie: " + e.Message); } }
private void RecursivelyDeleteCookieByDomain(Cookie cookie) { AddCookie(cookie); int dotIndex = cookie.Domain.IndexOf('.'); if (dotIndex == 0) { string domain = cookie.Domain.Substring(1); Cookie toDelete = new NullPathCookie(cookie.Name, cookie.Value, domain, cookie.Path, DateTime.MinValue); RecursivelyDeleteCookieByDomain(toDelete); } else if (dotIndex != -1) { string domain = cookie.Domain.Substring(dotIndex); Cookie toDelete = new NullPathCookie(cookie.Name, cookie.Value, domain, cookie.Path, DateTime.MinValue); RecursivelyDeleteCookieByDomain(toDelete); } else { Cookie toDelete = new NullPathCookie(cookie.Name, cookie.Value, string.Empty, cookie.Path, DateTime.MinValue); AddCookie(toDelete); } }