使用selenium webdriver java 4.0v捕获网络流量

Rac*_*los 4 java selenium network-programming selenium-chromedriver selenium-webdriver

我想捕获 Chromedriver 窗口中生成的网络流量。\n我发现可以使用 selenium 4.0 DevTools 实用程序来完成此操作,但我\xc2\xb4t 找不到如何操作或好的文档。

\n

https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/devtools/DevTools.html

\n

有最简单的方法吗?谢谢

\n

在此输入图像描述

\n

小智 5

使用 Selenium 4,您可以获得请求 URL 和响应 URL 等。

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.0.0</version>
</dependency>

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>4.3.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

使用此代码片段,您将获得所有请求和响应。


    @BeforeEach
    public void setUp() {
        WebDriverManager.chromedriver().setup();
        this.chromeDriver = new ChromeDriver();
        devTools = chromeDriver.getDevTools();
        devTools.createSession();
    }

    @Test
    public void getRequestsAndResponseUrls() throws InterruptedException {
        devTools.send(new Command<>("Network.enable", ImmutableMap.of()));
;
        devTools.addListener(Network.responseReceived(), l -> {
            System.out.print("Response URL: ");
            System.out.println(l.getResponse().getUrl());
        });
        devTools.addListener(Network.requestWillBeSent(), l -> {
            System.out.print("Request URL: ");
            System.out.println(l.getRequest().getUrl());
        });

        chromeDriver.get("https://edition.cnn.com/");

        // While Thread.sleep you you will see requests and responses appearing in console. 
        Thread.sleep(10000);
    }
Run Code Online (Sandbox Code Playgroud)

享受。