我想使用 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/