java - 是否可以使用 selenium 从 google chrome 开发人员工具的网络面板中提取任何 header 值?

标签 java selenium rest-assured

我想使用 selenium 访问 google chrome 开发者工具上网络面板下的 header 之一的值。

我可以使用 Selenium 中的 ChromeOptions 导航和访问网络面板的 json。但我还需要提取任何名称的任何 header 的值。对于前。我手动导航到 www.google.com,按 F12,单击左列中的任何名称,对于该特定名称,我需要在右侧访问标题部分下的“请求 URL”。

使用下面的代码,我可以访问网络面板:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/root/Downloads/aaa"); 
options.addArguments("start-maximized");
WebDriver driver = new ChromeDriver(options);[enter image description here][1]
driver.get("http://www.google.com");
String scriptToExecute = "var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;";
String netData = ((JavascriptExecutor)driver).executeScript(scriptToExecute).toString();

是否可以通过 Selenium 或任何 Java 程序实现?

最佳答案

你需要使用 LogType.performance 来获得它。它将包含大量信息,您可以进行相应的过滤。

public class travelComps {
    static ChromeDriver driver;

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver",
                "Chromedriver76PAth");

        ChromeOptions cop = new ChromeOptions();

        LoggingPreferences loggingprefs = new LoggingPreferences();
        loggingprefs.enable(LogType.BROWSER, Level.ALL);
        loggingprefs.enable(LogType.CLIENT, Level.ALL);
        loggingprefs.enable(LogType.PERFORMANCE, Level.ALL);
        loggingprefs.enable(LogType.PROFILER, Level.ALL);

        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setCapability(CapabilityType.LOGGING_PREFS, loggingprefs);
        cop.setCapability("goog:loggingPrefs", loggingprefs);

        cop.merge(capabilities);
        driver = new ChromeDriver(cop);
        driver.get("http://automationpractice.com/index.php");

        logBrowserConsoleLogs();

        driver.quit();

    }

    private static void logBrowserConsoleLogs() {

        all(LogType.PERFORMANCE);

    }

    public static void all(String logTypes) {
        System.out.println("================== " + logTypes + "  LOGS =======================");

        List<LogEntry> logEntries = driver.manage().logs().get(logTypes).getAll();
        for (LogEntry entry : logEntries) {
            System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel() + " " + entry.getMessage());
        }
        System.out.println("=======================================================");
    }

关于java - 是否可以使用 selenium 从 google chrome 开发人员工具的网络面板中提取任何 header 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57823767/

相关文章:

java - Hibernate 无法找到默认提供程序

python - Py.test - 从 csv 将变量应用于装饰器?

rest-assured - 如何从响应对象中获取特定的 json 键值

java - 如何在放心中通过字段值查找对象?

json - 通过 RestAssured 中的 JsonPath 访问匿名数组的元素

java - 如何使用 X,Y 坐标添加和重叠两个图像

java - 创建一个判断数字是否为素数的程序时遇到问题

java - Android Studio for 循环问题

python - 如何使用 "::before"在selenium中获取隐藏的href标签

java - Selenium - 使用 WebDriver 接口(interface)作为类型