GWT 中的控制台日志在测试期间不会出现在 Chrome 驱动程序中
Console logs in GWT do not appear in Chrome Driver during tests
在 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("--------------------------------------------------");
}
当我手动转到应该出现调试消息的网页时,它正确显示在控制台中。
但是,当我在测试期间打印控制台的内容时,该消息没有出现(不过我从其他来源收到其他消息)。
这是我设置 Web 驱动程序的方式:
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 驱动程序时控制台中没有出现调试消息?
在开发过程中我使用GWT.log,它非常方便并且在运行时得到了优化。对我有用。
static void log(java.lang.String message)
static void log(java.lang.String message, java.lang.Throwable e)
Logs a message to the development shell logger in Development Mode, or
to the console in Super Dev Mode.
文档: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);
}-*/;
应该这样做
在 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("--------------------------------------------------");
}
当我手动转到应该出现调试消息的网页时,它正确显示在控制台中。
但是,当我在测试期间打印控制台的内容时,该消息没有出现(不过我从其他来源收到其他消息)。
这是我设置 Web 驱动程序的方式:
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 驱动程序时控制台中没有出现调试消息?
在开发过程中我使用GWT.log,它非常方便并且在运行时得到了优化。对我有用。
static void log(java.lang.String message)
static void log(java.lang.String message, java.lang.Throwable e)
Logs a message to the development shell logger in Development Mode, or to the console in Super Dev Mode.
文档: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);
}-*/;
应该这样做