首页 > 解决方案 > 使用 selenium 捕获网络请求

问题描述

在 chrome 开发工具中,有一个捕获网络请求的选项。我想知道是否有任何方法可以在 python 中使用 selenium 访问请求。

我已经搜索了这个主题,但我找不到解决方案。其他库的解决方案也很受欢迎!

请求截图: 开发工具截图

具体请求信息: 在此处输入图像描述

标签: pythonpython-3.xseleniumselenium-webdriverselenium-chromedriver

解决方案


Selenium 4 实现了 Chrome 开发工具协议支持。但是,它仍处于 alpha 版本,因此如果您打算在生产代码中使用它,请记住这一点。

以下是Automate the Planet中的一些示例用法,您可能会觉得有帮助:

1. 拦截请求

EventHandler<RequestInterceptedEventArgs> requestIntercepted = (sender, e) =>
{
    Assert.IsTrue(e.Request.Url.EndsWith("jpg"));
};
            
RequestPattern requestPattern = new RequestPattern();
requestPattern.InterceptionStage = InterceptionStage.HeadersReceived;
requestPattern.ResourceType = ResourceType.Image;
requestPattern.UrlPattern = "*.jpg";
var setRequestInterceptionCommandSettings = new SetRequestInterceptionCommandSettings();
setRequestInterceptionCommandSettings.Patterns = new RequestPattern[] { requestPattern };
devToolssession.Network.SetRequestInterception(setRequestInterceptionCommandSettings);
devToolssession.Network.RequestIntercepted += requestIntercepted;

2. 监听控制台日志

EventHandler<MessageAddedEventArgs> messageAdded = (sender, e) =>
{
    Assert.AreEqual("BELLATRIX is cool", e.Message);
};
devToolssession.Console.Enable();
devToolssession.Console.ClearMessages();
devToolssession.Console.MessageAdded += messageAdded;
_driver.ExecuteScript("console.log('BELLATRIX is cool');");

注意:这是 Java 实现,您应该为 Python 编辑它。


推荐阅读