You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Selenium WebDriver 4 C#通过DevTools清除Chrome站点数据?

使用Selenium WebDriver 4 C#清除Local Storage和Session Storage实现登出

问题分析

你之前的代码覆盖了多种清除操作,但未精准针对Local Storage和Session Storage执行清除逻辑,这是导致需求未实现的核心原因。要达成目标,需通过DevTools的Storage域命令,明确指定存储类型与对应站点源(Origin)。

解决方案代码

以下是针对性的实现代码,核心是通过ClearDataForStorageKey方法分别清除Local Storage和Session Storage:

using OpenQA.Selenium.DevTools;
using OpenQA.Selenium.DevTools.V114.Storage; // 注意版本需与你的Chrome浏览器版本匹配

// 初始化DevTools会话
var devTools = (IDevTools)Context.Driver;
var session = devTools.GetDevToolsSession();
var storageDomain = session.GetVersionSpecificDomains<DevToolsSessionDomains>().Storage;

// 提取当前页面的Origin,确保清除对应站点下的存储数据
string currentOrigin = Context.Driver.Url.Split('/')[0] + "//" + Context.Driver.Url.Split('/')[2];

// 清除Local Storage
await storageDomain.ClearDataForStorageKey(new ClearDataForStorageKeyCommandSettings
{
    StorageKey = currentOrigin,
    StorageTypes = "localStorage"
});

// 清除Session Storage
await storageDomain.ClearDataForStorageKey(new ClearDataForStorageKeyCommandSettings
{
    StorageKey = currentOrigin,
    StorageTypes = "sessionStorage"
});

关键注意事项

  • 精准指定存储类型:必须明确传入"localStorage"或"sessionStorage"作为StorageTypes参数,这是精准清除目标存储的关键。
  • 版本匹配:确保引用的DevTools版本(示例中为V114)与你使用的Chrome浏览器版本完全一致,版本不兼容会导致命令执行失败。
  • 正确获取Origin:通过当前页面URL提取Origin,保证只清除当前站点的存储数据,避免误操作其他域名的存储内容。
  • 异步执行:DevTools命令均为异步操作,需使用await关键字确保清除操作完成后再执行后续逻辑。

内容的提问来源于stack exchange,提问作者Denis Koreyba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:26:57