如何使用Selenium获取Chrome浏览器控制台日志[INFO]条目

时间:2019-02-06 22:09:08

标签: java selenium

我在获取带有Selenium的chrome浏览器控制台日志[INFO]条目时遇到问题,而我获得的唯一Level类型的条目是错误(警告,严重)。

是否有任何方法可以获取与错误条目不同的东西,因为我需要获取[INFO]条目并根据其内容进行断言,所以我最近读到Selenium能够仅出于错误而返回条目,这样准确吗?

非常感谢您提供的任何信息, 谢谢您的关注和时间!

2 个答案:

答案 0 :(得分:0)

从文档(http://chromedriver.chromium.org/logging):

  

默认情况下,ChromeDriver仅将警告/错误记录到stderr。调试问题时,启用更多详细日志记录将很有帮助。

也来自文档:

System.setProperty("webdriver.chrome.logfile", "D:\\chromedriver.log");
System.setProperty("webdriver.chrome.verboseLogging", "true");

希望有效。

替代选项

如果上述方法不起作用,您可以尝试以下方法,这次改为使用ChromeOptions对象:

ChromeOptions options = new ChromeOptions();
options.setArguments("--log-level=1");

或来自({https://www.chromium.org/for-testers/enable-logging

  

要启用日志记录,请使用以下命令行标志启动Chrome:   --enable-logging --v = 1

翻译为:

options.setArguments("--enable-logging --v=1");

答案 1 :(得分:0)

感谢您的回答,但不幸的是,没有一个对我有用,我设法使用以下方法为我的问题找到了解决方案:

    ChromeOptions options = new ChromeOptions();
    options.setCapability(ChromeOptions.CAPABILITY, getCap());
    WebDriver driver = new ChromeDriver(options);

与定制方法一起使用:

private static DesiredCapabilities getCap() {
    DesiredCapabilities caps = DesiredCapabilities.chrome();
    LoggingPreferences logPrefs = new LoggingPreferences();
    logPrefs.enable(LogType.PERFORMANCE, Level.INFO);
    logPrefs.enable(LogType.PROFILER, Level.INFO);
    logPrefs.enable(LogType.BROWSER, Level.INFO);
    logPrefs.enable(LogType.CLIENT, Level.INFO);
    logPrefs.enable(LogType.DRIVER, Level.INFO);
    logPrefs.enable(LogType.SERVER, Level.INFO);
    caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
    return caps;
}

最后不得不制定一种过滤方法,因为硒对我来说无法正常工作,并返回了所有条目:

private static List<LogEntry> filterLog(LogEntries entries) {
    List<LogEntry> logs = new ArrayList<>();
    for (LogEntry entry : entries) {
        if(entry.getLevel().toString().equals(INFO)) {
            logs.add(entry);
        }
    }
    return logs;
}