Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试访问控制台日志条目时,Web驱动程序返回空列表_Java_Selenium_Selenide - Fatal编程技术网

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

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

我正在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);    
}
为什么我会得到一个空列表?

从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)

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

如果有帮助,您可以查看此列表