zob*_*bbo 1 c# selenium selenium-chromedriver
我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
但我这辈子都不能关掉W3C。我看不到 chrome 命令参数来执行此操作,而且我似乎没有办法添加 chrome 选项。ChromeOptions 中有一个选项,UseSpecCompliantProtocol当设置为 false 或 true 时,它似乎不会执行任何操作。
在这种情况下,如何为 selenium 设置本地存储?
所以我原来使用的代码是错误的。在这篇文章的帮助下
我得到以下正确的代码:
ILocalStorage webStorage = ((IHasWebStorage)webDriver).WebStorage.LocalStorage;
webStorage.SetItem("useTestData", "true");
Run Code Online (Sandbox Code Playgroud)
然而,正如链接中的海报一样,这给了我一个例外:
System.InvalidOperationException: 'Driver does not support manipulating HTML5 web storage
Run Code Online (Sandbox Code Playgroud)
所以看来网络驱动程序不支持该功能。在这篇文章的帮助下,我得到了以下代码:
IJavaScriptExecutor js = (IJavaScriptExecutor)webDriver;
js.ExecuteScript("localStorage.setItem('useTestData','true');");
Run Code Online (Sandbox Code Playgroud)
这成功地将密钥添加到本地存储。添加密钥时要小心,因为它似乎与 URL 相关联,因此如果在加载 URL 之前过早加载它将会失败。
| 归档时间: |
|
| 查看次数: |
3166 次 |
| 最近记录: |