【问题标题】:Selenium 4 C# Chrome DevToolsSelenium 4 C# Chrome 开发者工具
【发布时间】:2022-08-21 08:51:20
【问题描述】:

我想截取来自网络Fetch/XHR 的错误消息。我应该采用哪种方法或如何建立连接并拦截此信息? 我知道这是必要的代码库:

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

我试图创建一个 EventHandler,但不幸的是,这个事件的 requestID 与 DevTools 参数的 requestID 不匹配。我应该如何获得requestID 以及我需要什么方法来拦截出现在网络预览页面上的错误

    标签: c# selenium-webdriver chrome-devtools-protocol selenium4


    【解决方案1】:

    所有错误都应记录到控制台域。也许你正在寻找这个

    devToolsSession.Domains.Log.Enable();
    devToolsSession.Domains.Log.EntryAdded += (o, args) => logs.Add(args.Entry);
    devToolsSession.Domains.JavaScript.ConsoleApiCalled += (sender, e) =>
    {
           Console.WriteLine("Log: {0} {1}", e.Timestamp, e.Type);
           e.Arguments.ToList().ForEach(x => Console.WriteLine($"Type: {x.Type}, 
           Value: {x.Value}"));
    };
    

    或拦截流量(未测试)

    List<long> httpStatuses = new List<long>() { 500, 501, 502, 503, 504 };
        
    _driver.GetDevToolsSession().Domains.Network.ResponsePaused += (o, args) =>
    {
      if (httpStatuses.Contains(args.ResponseData.StatusCode))
                            //log something...
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2020-06-15
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多