1

I would like to intercept the error messages from network Fetch/XHR. Which method should I take or how can I make a connection and intercept this information? I know this is necessary code base:

    driver = new ChromeDriver();
                driver.Manage().Window.Maximize();
                devTools = driver as IDevTools;
                session = devTools.GetDevToolsSession();
                devToolsSession = session.GetVersionSpecificDomains<DevToolsSessionDomains>();
                devToolsSession.Network.Enable(new Network.EnableCommandSettings());

I tried to create an EventHandler but unfortunately, this requestID of event doesn't match with requestID of the DevTools parameter. How should I get requestID and what method do I need to intercept errors which appear on the preview page of the Network

enter image description here

GSerjo
  • 4,725
  • 1
  • 36
  • 55

1 Answers1

1

Try this

IDevTools devTools = driver.OriginDriver as IDevTools;
DevToolsSession session = devTools.GetDevToolsSession();
FetchAdapter fetchAdapter = session.GetVersionSpecificDomains<OpenQA.Selenium.DevTools.V95.DevToolsSessionDomains>().Fetch;

var enableCommandSettings = new OpenQA.Selenium.DevTools.V95.Fetch.EnableCommandSettings();
    
var requestPattern = new OpenQA.Selenium.DevTools.V95.Fetch.RequestPattern();
        requestPattern.RequestStage = RequestStage.Request;
        requestPattern.ResourceType = ResourceType.XHR;
    
enableCommandSettings.Patterns = new OpenQA.Selenium.DevTools.V95.Fetch.RequestPattern[] { requestPattern };

fetchAdapter.Enable(enableCommandSettings);
    
EventHandler<OpenQA.Selenium.DevTools.V95.Fetch.RequestPausedEventArgs> requestIntercepted = (sender, e) =>
{
    Requests.Add(e.Request);
    fetchAdapter.ContinueRequest(new OpenQA.Selenium.DevTools.V95.Fetch.ContinueRequestCommandSettings()
    {
        RequestId = e.RequestId
    });
};

fetchAdapter.RequestPaused += requestIntercepted;