使用硒捕获网络请求

时间:2020-09-22 09:51:54

标签: python python-3.x selenium selenium-webdriver selenium-chromedriver

在chrome开发工具中,有一个选项可以捕获网络请求。 我想知道是否有任何方法可以在python中使用Selenium访问请求。 我已经搜索了该主题,但是找不到解决方案。其他图书馆的解决方案也适用!谢谢! (:

请求截图: devtools screenshot

特定请求信息: enter image description here

1 个答案:

答案 0 :(得分:0)

Selenium 4实现了Chrome Dev Tools协议支持。但是,它仍处于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编辑它。