我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值。我认为这相当微不足道,但我似乎无法让它发挥作用。我对 C# 很陌生,所以我可能错过了一些东西。无论如何,我有这个功能:
public static void SetMockData() { OpenQA.Selenium.Remote.RemoteWebStorage storage = new OpenQA.Selenium.Remote.RemoteWebStorage((OpenQA.Selenium.Remote.RemoteWebDriver)webDriver); storage.LocalStorage.SetItem("useTestData", "true"); }
我不确定这是否正确。无论如何,当我运行它时,我收到以下异常:
System.NotImplementedException : unknown command: Cannot call non W3C standard command while in W3C mode
但我这辈子都不能关掉W3C。我看不到 chrome 命令参数来执行此操作,而且我似乎没有办法添加 chrome 选项。 ChromeOptions中有一个选项叫做UseSpecCompliantProtocol
当设置为 false 或 true 时,它似乎没有做任何事情。
在这种情况下,如何为 selenium 设置本地存储?
所以我原来使用的代码是错误的。在...的帮助下这个帖子 https://stackoverflow.com/questions/64693789/system-invalidcastexception-unable-to-cast-object-was-received-when-retriev
我得到以下正确的代码:
ILocalStorage webStorage = ((IHasWebStorage)webDriver).WebStorage.LocalStorage;
webStorage.SetItem("useTestData", "true");
然而,正如链接中的海报一样,这给了我一个例外:
System.InvalidOperationException: 'Driver does not support manipulating HTML5 web storage
所以看来网络驱动程序不支持该功能。在...的帮助下这个帖子 https://stackoverflow.com/questions/64693789/system-invalidcastexception-unable-to-cast-object-was-received-when-retriev我得到以下代码:
IJavaScriptExecutor js = (IJavaScriptExecutor)webDriver;
js.ExecuteScript("localStorage.setItem('useTestData','true');");
这成功地将密钥添加到本地存储。添加密钥时要小心,因为它似乎与 URL 相关联,因此如果在加载 URL 之前过早加载它将会失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)