首页 > 解决方案 > C# Selenium Chrome Devtools 协议

问题描述

我正在尝试使用这个 devtools protcol 命令:Page.AddScriptToEvaluateOnNewDocument.

似乎这个协议命令在selenium 的 c# 版本中没有完全实现。我也尝试了单击事件,但这也不起作用。但是,我能够使用一个 devtools 命令,一个带有代码的网络命令:

IDevTools devTools = driver as IDevTools;
DevToolsSession session = devTools.CreateDevToolsSession();
session.Network.Enable(new OpenQA.Selenium.DevTools.Network.EnableCommandSettings());
session.Network.SetBlockedURLs(new OpenQA.Selenium.DevTools.Network.SetBlockedURLsCommandSettings()
{
    Urls = new string[] { "favicon" }
});

我可以做些什么来自己解决这个问题吗?

参考资料:
https ://github.com/SeleniumHQ/selenium/issues/8000

标签: c#seleniumselenium-webdrivergoogle-chrome-devtoolschrome-devtools-protocol

解决方案


这是您可以使用的正确代码:

using DevTools =  OpenQA.Selenium.DevTools.V95;

using Network = OpenQA.Selenium.DevTools.V95.Network;

using DevToolsSessionDomains = OpenQA.Selenium.DevTools.V95.DevToolsSessionDomains;


        IDevTools devTools = chromeDriver as IDevTools;
        IDevToolsSession session = devTools.GetDevToolsSession();


        var domains = session.GetVersionSpecificDomains<DevToolsSessionDomains>();
        await domains.Network.Enable(new Network.EnableCommandSettings());
        await domains.Network.SetBlockedURLs(new DevTools.Network.SetBlockedURLsCommandSettings()
        {
            Urls = new string[] { "favicon" }
        });

推荐阅读