0

我能够在控制台中查看状态代码,并且能够获取 GET 请求的响应正文(下面是使用 Selenium4 的代码)

就像我们在 Postman 中使用 JS 一样,如何通过在 body 中定义变量来在 Selenium 4 中发送 POST 请求?

目标是使用 Selenium 4 实现 API 链接。

package selenium4Practice;
import java.util.Optional;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v96.network.model.Request;
import org.openqa.selenium.devtools.v96.network.model.RequestId;
import org.openqa.selenium.devtools.v96.network.Network;

import io.github.bonigarcia.wdm.WebDriverManager;

public class ChromeDevLogResponse {

    public static void main(String[] args) {
        WebDriverManager.chromedriver().setup();
        ChromeDriver driver = new ChromeDriver();
        DevTools devTools = driver.getDevTools();
        devTools.createSession();
        // enable network tracking
        RequestId[] requestIds = new RequestId[1];
        
        devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
        // adding listener to listen the response when Event fired when request is sent
        devTools.addListener(Network.requestWillBeSent(), request -> {
            Request req = request.getRequest();
            System.out.println("Request URL " + req.getUrl());
            requestIds[0] = request.getRequestId();
        });
        // adding listener to listen the response when Event fired when response is
        // received
        // response is - response object received
        devTools.addListener(Network.responseReceived(), response -> {
//          Response res = response.getResponse();
            System.out.println("Response URL " + response.getResponse().getUrl());
            int status = response.getResponse().getStatus();
            System.out.println("Status code is " + status);
            String headers = response.getResponse().getHeaders().toString();
            System.out.println("Response Headers " + headers);
            System.out.println("Response Time is " + response.getResponse().getResponseTime());
            String type = response.getType().toJson();
            String responseBody = devTools.send(Network.getResponseBody(requestIds[0])).getBody();
            System.out.println("Response Body: " + responseBody);
            if (response.getResponse().getStatus().toString().startsWith("4")) {
                System.out.println(response.getResponse().getUrl() + " is failing with status code "
                        + response.getResponse().getStatus());
            }
        });
        driver.get("https://reqres.in/api/users");
    }
}
4

0 回答 0