首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用selenium4获取.har文件或网络请求

如何使用selenium4获取.har文件或网络请求
EN

Stack Overflow用户
提问于 2019-11-18 15:09:36
回答 1查看 789关注 0票数 1

正如我们所知,在新版本的Selenium (4.0.0-alpha-2)中添加的特性之一是一个非常好的Chrome界面DevTools API in Java.DevTools API提供了控制浏览器和网络流量的强大功能

根据文档,使用最新版本的selenium,我们可以捕获来自会话的网络请求。

之前我使用browsermob获取网络请求,但不幸的是他们几年没有更新它。

我要找的人谁使用这个selenium4开发工具应用程序接口获得所有的内部请求。

有人能给我提个建议吗?我怎样才能开始获得所有的请求?谢谢,advance

EN

回答 1

Stack Overflow用户

发布于 2019-11-18 17:56:13

您可以在gitHub上的selenium-chrome-devtools-examples资源库中找到@adiohana的示例。

我想你会发现这个测试例子很有帮助:

代码语言:javascript
复制
public class ChromeDevToolsTest {

    private static ChromeDriver chromeDriver;
    private static DevTools chromeDevTools;

    @BeforeClass
    public static void initDriverAndDevTools() {

        chromeDriver = new ChromeDriver();
        // dev-tools handler
        chromeDevTools = chromeDriver.getDevTools();
        chromeDevTools.createSession();

    }

    @Test
    public void interceptRequestAndContinue() {

        //enable Network
        chromeDevTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));

        //add listener to intercept request and continue
        chromeDevTools.addListener(Network.requestIntercepted(),
                requestIntercepted -> chromeDevTools.send(
                        Network.continueInterceptedRequest(requestIntercepted.getInterceptionId(),
                                Optional.empty(),
                                Optional.empty(),
                                Optional.empty(), Optional.empty(),
                                Optional.empty(),
                                Optional.empty(), Optional.empty())));

        //set request interception only for css requests
        RequestPattern requestPattern = new RequestPattern("*.css", ResourceType.Stylesheet, InterceptionStage.HeadersReceived);
        chromeDevTools.send(Network.setRequestInterception(ImmutableList.of(requestPattern)));

        chromeDriver.get("https://apache.org");

    }

您需要添加以下导入:

代码语言:javascript
复制
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.Command;
import org.openqa.selenium.devtools.Console;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.network.Network;
import org.openqa.selenium.devtools.network.model.BlockedReason;
import org.openqa.selenium.devtools.network.model.InterceptionStage;
import org.openqa.selenium.devtools.network.model.RequestPattern;
import org.openqa.selenium.devtools.network.model.ResourceType;
import org.openqa.selenium.devtools.security.Security;

import java.util.Optional;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58909528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档