尝试访问控制台日志条目时,Web驱动程序返回空列表

时间:2018-01-10 09:33:46

标签: 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());
}

但是,我得到一个空列表(唯一记录的是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);    
}

为什么我得到一个空列表?

3 个答案:

答案 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

的phantomjs目录中

答案 2 :(得分:0)

接收空列表的另一个可能原因是先前已读取控制台日志。当我通过以下方式读取Ruby / Capybara中的日志时:

page.driver.browser.manage.logs.get(:browser)

我得到了日志,但是如果我再次阅读它,则会得到一个空白列表,直到刷新页面为止。