Java 尝试访问控制台日志条目时,Web驱动程序返回空列表
我正在Selenide中运行一些测试,我需要在某个时候显示浏览器控制台的内容:Java 尝试访问控制台日志条目时,Web驱动程序返回空列表,java,selenium,selenide,Java,Selenium,Selenide,我正在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()); } 但是,我得到一个空列表,因此唯
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);
}
为什么我会得到一个空列表?从webdriver模块,您会发现以下注意事项:
只有少数浏览器支持远程日志API,尤其是Firefox
还有铬。Firefox支持基本的日志功能,而
Chrome提供了强大的性能记录选项。远程日志记录是
仍然被认为是一个非标准的特性,并且该特性公开了API
它的模块是非冻结的。此模块可能会更新
一旦正式定义了日志记录,就打破了向后兼容性
根据W3CWebDriver规范
PhantomJS似乎不支持远程日志API。正如yong所说,PhantomJS不支持远程日志。但您可以在默认位置获取phantom 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目录下,名为phantomjs.log另一个接收空列表的可能原因是之前已读取控制台日志。当我以以下方式阅读Ruby/Capybara中的日志时:
page.driver.browser.manage.logs.get(:browser)
我得到了日志,但如果我再次阅读,我会得到一个空列表,直到页面刷新。如果有帮助,您可以查看此列表