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

vatpfxk5  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(572)

我想捕获chromedriver窗口中生成的网络流量。我发现可以使用Selenium4.0devtools实用工具来完成,但是我可以´找不到一个好的文档或如何使用。
https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/devtools/devtools.html
有最简单的方法吗?谢谢

y3bcpkx1

y3bcpkx11#

你可以使用 LoggingPreferences 以及 ChromeOptions 进口

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogEntry;
import org.openqa.selenium.logging.LogType;
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.CapabilityType;

这里我们得到json字符串,其中包含关于in-log记录的数据。我用 json-simple 库将接收到的json字符串转换为jsonobject。

LoggingPreferences preferences = new LoggingPreferences();
preferences.enable(LogType.PERFORMANCE, Level.ALL);

ChromeOptions option = new ChromeOptions();
option.setCapability(CapabilityType.LOGGING_PREFS, preferences);
option.setCapability("goog:loggingPrefs", preferences);
option.addArguments();

System.setProperty("webdriver.chrome.driver", "chrome_driver_path");

ChromeDriver chromeDriver = new ChromeDriver(option);
chromeDriver.manage().window().maximize();
this.driver = chromeDriver;

driver.get("website_url");

LogEntries logs = driver.manage().logs().get(LogType.PERFORMANCE);
for (LogEntry entry : logs) {
    JSONParser parser = new JSONParser();
    JSONObject jsonObject = null;
    try {
        jsonObject = (JSONObject) parser.parse(entry.getMessage());
    } catch (ParseException e) {
        e.printStackTrace();
    }
    JSONObject messageObject = (JSONObject) jsonObject.get("message");
    System.out.println(messageObject.toJSONString());
    // You can do the required processing to messageObject
}

您可以使用从日志中筛选网络呼叫的类型 type json字符串中的(xhr、脚本、样式表)。

for (LogEntry entry : logs) {
   if(entry.toString().contains("\"type\":\"XHR\"")) {
   }
}

相关问题