Java driver.manage().logs().get(";browser";);再次调用时不工作

Java driver.manage().logs().get(";browser";);再次调用时不工作,java,selenium,selenium-webdriver,automated-tests,Java,Selenium,Selenium Webdriver,Automated Tests,我正在尝试使用SeleniumWebDriver捕获Chrome的浏览器控制台日志。我在@Test方法中使用了以下方法两次。它在第一次执行时返回控制台日志,但当我再次调用它时,它返回一个空日志条目 public String getConsoleLogs(WebDriver driver) { String consoleError=""; LogEntries log=driver.manage().logs().get("browser"); for(LogE

我正在尝试使用SeleniumWebDriver捕获Chrome的浏览器控制台日志。我在
@Test
方法中使用了以下方法两次。它在第一次执行时返回控制台日志,但当我再次调用它时,它返回一个空日志条目

public String getConsoleLogs(WebDriver driver)
{
     String consoleError="";
     LogEntries log=driver.manage().logs().get("browser"); 
     for(LogEntry entry:logs.getAll())
            {
                  consoleError+=entry.toString()
             }
     return consoleError;
}

编辑:修改代码,使我的问题更加清晰。当第二次调用此is方法时,consoleError是一个空字符串。

返回类型为
driver.manage().logs().get(“浏览器”)
日志项
不是
字符串
只要换个颜色就行了

public LogEntries getConsoleLogs(WebDriver driver) {
    return driver.manage().logs().get("browser");
}
您已经获得了所有日志条目,然后需要随时迭代

e、 g

for (LogEntry entry : getConsoleLogs(driver)) {
        System.out.println(entry.getMessage());
    }

它返回的是日志条目,而不是字符串。使用以下方法可以解决您的问题

 for (LogEntry entry : driver.manage().logs().get(LogType.BROWSER)) {
        String msg = entry.getMessage();
        System.err.println("Message: " + msg);
    }

引用Webdriver文档:

请注意,日志缓冲区在每次调用后都会重置,这意味着可用日志条目对应于给定日志类型尚未返回的条目。实际上,这意味着此调用将返回自上次调用或会话开始以来的可用日志条目


如果这不符合您的需要,您需要在读取日志时将其推到堆栈上,以便以后可以参考它们。

Hi-Waqar…我的问题与返回对象无关。感谢您指出退货类型,我相应地修改了我的问题。我已经实现了你提到的逻辑。返回空字符串意味着日志条目是空的。