我在Selenide运行一些测试,我需要在某些时候显示浏览器控制台的内容:
LogEntries logs = getWebDriver().manage().logs().get(LogType.BROWSER);
System.out.println(logs.getAll().size());
for (LogEntry log: logs.getAll()) {
System.out.println(log.getMessage());
}
但是,我得到一个空列表(唯一记录的是0
)。我手动检查了在执行测试的每个步骤时控制台不应该为空。
有关信息,这就是我创建Web驱动程序的方法:
private static void setUpPhantomJS() {
Configuration.browser = "phantomjs";
DesiredCapabilities caps = DesiredCapabilities.phantomjs();
caps.setJavascriptEnabled(false);
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS,
Arrays.asList("--ignore-ssl-errors=true", "--webdriver-loglevel=INFO"));
caps.setCapability(CapabilityType.SUPPORTS_ALERTS, true);
PhantomJSDriver webDriver = new PhantomJSDriver(caps);
webDriver.setLogLevel(Level.ALL);
WebDriverRunner.setWebDriver(webDriver);
}
为什么我得到一个空列表?
答案 0 :(得分:1)
在webdriver logging模块中,您将在下面找到注意:
只有少数浏览器支持远程日志记录API(特别是Firefox) 和Chrome)。 Firefox支持基本的日志记录功能 Chrome公开了强大的性能日志记录选项。远程日志记录是 仍被视为非标准功能,以及由此公开的API 它的模块是非冻结的。该模块可能会更新 一旦正式定义了日志记录,就会破坏向后兼容性 通过W3C WebDriver规范。
似乎PhantomJS不支持远程日志记录API。
答案 1 :(得分:0)
正如yong所说,幻影js不支持远程日志记录。但您可以在默认位置获取幻像js日志文件,也可以使用命令行参数设置日志文件路径。
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS,
new String[] {
"--web-security=no",
"--ignore-ssl-errors=yes",
"--webdriver-logfile="usr/local/logs/phantomjsdriver.log"
});
否则您可以设置系统属性'phantomjs.logfile.path'
System.setProerty("phantomjs.logfile.path',<file path>);
默认情况下,日志文件位于名为phantomjs.log
答案 2 :(得分:0)
接收空列表的另一个可能原因是先前已读取控制台日志。当我通过以下方式读取Ruby / Capybara中的日志时:
page.driver.browser.manage.logs.get(:browser)
我得到了日志,但是如果我再次阅读它,则会得到一个空白列表,直到刷新页面为止。