Search code examples
c#seleniumselenium-webdriverwebdriverchrome-devtools-protocol

Run cdp commands on Selenium C#


Selenium seems to have a method driver.execute_cdp_cmd but I cannot find any executeCdpCommand for Chrome web driver in C# version of selenium library, Anyone knows where or how we can run such commands like the below code in python (I want the same on C# .NET):

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})

driver.get(some_url)

Solution

  • I found the answer:

    using OpenQA.Selenium;
    using OpenQA.Selenium.Chrome;
    using OpenQA.Selenium.DevTools;
    using OpenQA.Selenium.DevTools.V96.Page;
    using Network = OpenQA.Selenium.DevTools.V96.Network;
    using DevToolsSessionDomains = OpenQA.Selenium.DevTools.V96.DevToolsSessionDomains;
    
    
    IDevTools devTools = driver as IDevTools;
                DevToolsSession session = devTools.GetDevToolsSession();
                var domains = session.GetVersionSpecificDomains<DevToolsSessionDomains>();
                domains.Page.Enable(new OpenQA.Selenium.DevTools.V96.Page.EnableCommandSettings());
    domains.Page.AddScriptToEvaluateOnNewDocument(new AddScriptToEvaluateOnNewDocumentCommandSettings()
            {
                Source = "Object.defineProperty(navigator, 'webdriver', { get: () => undefined })"
            });