在测试期间,GWT中的控制台日志不会出现在Chrome驱动程序中

时间:2018-01-10 16:27:36

标签: java google-chrome gwt

在GWT中,我使用以下方法在我的Web浏览器控制台中显示调试消息:

Log.debug("@@@ Debug");

我正在使用Chrome驱动程序运行一些测试,我使用以下方法打印控制台的内容:

public static void displayConsoleContent() {
    LogEntries logs = getWebDriver().manage().logs().get(LogType.BROWSER);

    System.out.println("Console content:\n--------------------------------------------------");
    for (LogEntry log: logs.getAll()) {
        System.out.println("* " + log.toString());
    }
    System.out.println("--------------------------------------------------");
}

当我手动转到应该出现调试消息的网页时,它会在控制台中正确显示。

但是,当我在测试期间打印控制台的内容时,不会显示该消息(但我会收到来自其他来源的其他消息)。

这就是我设置网络驱动程序的方法:

private static void setUpChrome() {
        System.setProperty("webdriver.chrome.driver", "/home/user/chromedriver");

        Configuration.browser = "chrome";
        ChromeOptions options = new ChromeOptions();
        options.setBinary("/usr/bin/google-chrome");

        LoggingPreferences loggingPreferences = new LoggingPreferences();
        loggingPreferences.enable(LogType.BROWSER, Level.ALL);
        options.setCapability(CapabilityType.LOGGING_PREFS, loggingPreferences);

        options.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
        ChromeDriver webDriver = new ChromeDriver(options);
        WebDriverRunner.setWebDriver(webDriver);
    }

使用Chrome驱动程序时,为什么调制信息不会显示在控制台中?

1 个答案:

答案 0 :(得分:1)

在开发过程中,我使用GWT.log,非常方便,并在运行时进行优化。为我设计魅力。

static void     log(java.lang.String message)
static void     log(java.lang.String message, java.lang.Throwable e)
  

在开发模式下将消息记录到开发shell记录器,或   在超级开发模式下到控制台。

文档:http://www.gwtproject.org/javadoc/latest/com/google/gwt/core/client/GWT.html#log-java.lang.String-

另一方面,如果您运行已编译的代码,GWT.log将被优化。

一个快速而又脏的选择是使用丑陋的JSNI直接登录到控制台(如果它有效,你可以在将来做得更漂亮)。

public static final native void log(Object o) /*-{
     console.log(o);
}-*/;

应该这样做