python - 使用 selenium 捕获网络请求
问题描述
在 chrome 开发工具中,有一个捕获网络请求的选项。我想知道是否有任何方法可以在 python 中使用 selenium 访问请求。
我已经搜索了这个主题,但我找不到解决方案。其他库的解决方案也很受欢迎!
解决方案
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 编辑它。
推荐阅读
- reactjs - 来自一个客户端的多个 Socket.IO 实例
- linux - 读取大型 gb 文件并收到错误“client_loop:发送断开连接:管道损坏”
- c# - 带有 => 和 || 的布尔值 .. 这是什么意思?
- conv-neural-network - 像在 francois chollet book 中一样可视化卷积层
- python - Python条形图X轴重命名matplotlib
- kubernetes-helm - 是否可以在部署时使用 cli 更改特定依赖项的存储库?
- java - Selenium ChromeDriver 给出“InitializeSandbox() 在进程 gpu 进程中调用多个线程”错误
- ios - iOS 抓取器拖动句柄是 UIKit 组件吗?
- c# - 使用 $id 反序列化对象时获取 JsonSerializationException
- mongodb - 了解 Mongoose/MongoDB 中的隐式 AND