【问题标题】:How to delete browser network log in java如何在java中删除浏览器网络日志
【发布时间】:2021-10-24 05:06:46
【问题描述】:

我们需要在浏览器中执行一些活动,然后为 chrome 捕获最新的网络日志。我正在尝试编写一个代码,我们可以在执行特定活动之前删除网络日志,然后捕获日志。

我正在使用这行代码来清除网络日志,但它抛出了一个错误:driver.manage().logs().get(LogType.BROWSER).getAll().clear();

我该如何解决这个问题?在 java 中,对于 selenium 框架是否有另一种方法?

【问题讨论】:

  • 网络日志,你的意思是应用程序进行的http调用吧?
  • 没错,每当我们在浏览器上执行任何任务时,都会在网络选项卡中记录日志状态。

标签: java selenium google-chrome browser webdriver


【解决方案1】:

selenium 没有内置支持来捕获或删除浏览器进行的网络调用。为了克服这个限制,我创建了一个简单的库wow-xhr,我们可以使用它来获取网络调用,使我的浏览器成为我的浏览器。

WowXHR wowXhr = new WowXHR(new ChromeDriver()); //any selenium webdriver or RemoteWebDriver
WebDriver driver = wowXhr.getMockDriver();

driver.get("https://www.google.com");
driver.findElement(By.name("q")).sendKeys("selenium"); //enter value in search box
wowXHR.log().clear(); //clears all network calls
driver.findElement(By.tagName("button")).click(); //click search button

/* Get all network calls that are made after clicking search button */
List<XHRLog> logs = wowXHR.log().getXHRLogs();
logs.forEach(log -> {
    Date initiatedTime =  log.getInitiatedTime();
    Date completedTime =  log.getCompletedTime();

    String method = log.getRequest().getMethod().name(); // GET or POST or PUT etc
    String url = log.getRequest().getUrl();
    Integer status = log.getResponse().getStatus();
    String requestBody = (String) log.getRequest().getBody();
    String responseBody = (String) log.getResponse().getBody();
    Map<String, String> requestHeaders = log.getRequest().getHeaders();
    Map<String, String> responseHeaders = 
    log.getResponse().getHeaders();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2015-01-07
    相关资源
    最近更新 更多