是否可以使用 selenium 从 google chrome 开发人员工具的网络面板中提取任何 Header 值?
Is it possible to extract any Header value from the Network panel on google chrome developer tools with selenium?
我想使用 selenium 在 google chrome 开发人员工具的网络面板下访问 Headers 之一的值。
我可以使用 Selenium 中的 ChromeOptions 导航和访问 json for Networks 面板。但我还需要为任何名称提取任何 Headers 的值。对于前。我手动导航到 www.google.com,按 F12,单击左侧栏中的任何名称,对于该特定名称,在右侧,我需要访问 Headers 部分下的 "Request 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("=======================================================");
}
我想使用 selenium 在 google chrome 开发人员工具的网络面板下访问 Headers 之一的值。
我可以使用 Selenium 中的 ChromeOptions 导航和访问 json for Networks 面板。但我还需要为任何名称提取任何 Headers 的值。对于前。我手动导航到 www.google.com,按 F12,单击左侧栏中的任何名称,对于该特定名称,在右侧,我需要访问 Headers 部分下的 "Request 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("=======================================================");
}