Selenium webdriver 提供的文件ExtentReports.html不是有效的扩展数据块文件。分析失败,当前报告中将不会列出所提供文件中的测试

Selenium webdriver 提供的文件ExtentReports.html不是有效的扩展数据块文件。分析失败,当前报告中将不会列出所提供文件中的测试,selenium-webdriver,extentreports,selenium-extent-report,Selenium Webdriver,Extentreports,Selenium Extent Report,我面临ExtentReports.html文件的问题,该文件声明它不是有效的扩展数据块文件 TestNG的默认侦听器用于生成数据块报告。如其他问题所述,我在onFinish(ITestContext context)方法中添加了reports.flush(),该方法在所有@Test方法之后执行 此问题发生在以下行中: public class TestListener implements ITestListener { public ExtentReports reports; publi

我面临ExtentReports.html文件的问题,该文件声明它不是有效的扩展数据块文件

TestNG的默认侦听器用于生成数据块报告。如其他问题所述,我在
onFinish(ITestContext context)
方法中添加了
reports.flush()
,该方法在所有@Test方法之后执行

此问题发生在以下行中:

public class TestListener implements ITestListener {

public ExtentReports reports;

public void onStart(ITestContext context) {
    /** this is where the error is thrown **/ 
    reports = new ExtentReports(dir + "/ExtentReportTestNG.html", false, DisplayOrder.OLDEST_FIRST);
    reports.loadConfig(new File(System.getProperty("user.dir") + "/extent-config.xml"));
    }
}
事实上,我可以说这是一个严重的警告:

SEVERE: The supplied file C:\Bala\E\Checkouts\seleniumScriptsRegression\test-output\ExtentReportTestNG.html is not a valid Extent file. Parsing failed, tests from the supplied file will not be listed in the current report.
此警告影响以下代码行:

public void onFinish(ITestContext context) {
try {
        reports.endTest(test);
        reports.flush(); //The error line
    }
}
下面是NullPointerException的完整堆栈跟踪:

FreeMarker template error:
The following has evaluated to null or missing:
==> report.systemInfoMap[info]  [in template "Extent.ftl" at line 193, column 95]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
    - Failed at: ${report.systemInfoMap[info]}  [in template "Extent.ftl" at line 193, column 93]
----

Java stack trace (for programmers):
----
freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
    at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:131)
    at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:355)
    at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
    at freemarker.core.DollarVariable.accept(DollarVariable.java:41)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.MixedContent.accept(MixedContent.java:54)
    at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
    at freemarker.core.IteratorBlock$IterationContext.executeNestedBlockInner(IteratorBlock.java:240)
    at freemarker.core.IteratorBlock$IterationContext.executeNestedBlock(IteratorBlock.java:220)
    at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:194)
    at freemarker.core.Environment.visitIteratorBlock(Environment.java:572)
    at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:78)
    at freemarker.core.IteratorBlock.accept(IteratorBlock.java:64)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.MixedContent.accept(MixedContent.java:54)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.Environment.process(Environment.java:302)
    at freemarker.template.Template.process(Template.java:325)
    at com.relevantcodes.extentreports.HTMLReporter.flush(HTMLReporter.java:173)
    at com.relevantcodes.extentreports.Report.flush(Report.java:468)
    at com.relevantcodes.extentreports.ExtentReports.flush(ExtentReports.java:900)
    at com.exterro.fusion.selenium.controls.TestListener.onFinish(TestListener.java:195)
    at org.testng.TestRunner.fireEvent(TestRunner.java:1239)
    at org.testng.TestRunner.afterRun(TestRunner.java:1030)
    at org.testng.TestRunner.run(TestRunner.java:636)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
    at org.testng.SuiteRunner.run(SuiteRunner.java:268)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
    at org.testng.TestNG.run(TestNG.java:1064)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
java.lang.NullPointerException
    at java.io.Writer.write(Unknown Source)
    at com.relevantcodes.extentreports.utils.Writer.write(Writer.java:21)
    at com.relevantcodes.extentreports.HTMLReporter.flush(HTMLReporter.java:186)
    at com.relevantcodes.extentreports.Report.flush(Report.java:468)
    at com.relevantcodes.extentreports.ExtentReports.flush(ExtentReports.java:900)
    at com.exterro.fusion.selenium.controls.TestListener.onFinish(TestListener.java:195)
    at org.testng.TestRunner.fireEvent(TestRunner.java:1239)
    at org.testng.TestRunner.afterRun(TestRunner.java:1030)
    at org.testng.TestRunner.run(TestRunner.java:636)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
    at org.testng.SuiteRunner.run(SuiteRunner.java:268)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
    at org.testng.TestNG.run(TestNG.java:1064)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
FreeMarker模板错误:
以下内容的计算结果为null或缺失:
==>report.systemInfoMap[info][在模板“Extent.ftl”第193行第95列中]
----
提示:导致此错误的是最后一个[]步骤,而不是之前的步骤。
----
提示:如果已知失败的表达式在法律上引用了有时为null或缺少的内容,请指定一个默认值,如myOptionalVar!myDefault,或在出现时使用缺少时使用。(这些仅包括表达式的最后一步;要覆盖整个表达式,请使用括号:(myOptionalVar.foo)!myDefault,(myOptionalVar.foo)??
----
----
FTL堆栈跟踪(“~”表示嵌套相关):
-在:${report.systemInfoMap[info]}[模板“Extent.ftl”第193行第93列]失败
----
Java堆栈跟踪(针对程序员):
----
freemarker.core.InvalidReferenceException:[…已打印异常消息;请参见上文…]
位于freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:131)
位于freemarker.core.EvalUtil.胁迫模型字符串(EvalUtil.java:355)
位于freemarker.core.Expression.evalandImpressionString(Expression.java:82)
在freemarker.core.DollarVariable.accept(DollarVariable.java:41)中
访问(Environment.java:324)
位于freemarker.core.MixedContent.accept(MixedContent.java:54)
位于freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
在freemarker.core.IteratorBlock$IterationContext.ExecuteTestedBlockInner处(IteratorBlock.java:240)
位于freemarker.core.IteratorBlock$IterationContext.executeNestedBlock(IteratorBlock.java:220)
在freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:194)中
位于freemarker.core.Environment.visitIteratorBlock(Environment.java:572)
在freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:78)中
位于freemarker.core.IteratorBlock.accept(IteratorBlock.java:64)
访问(Environment.java:324)
位于freemarker.core.MixedContent.accept(MixedContent.java:54)
访问(Environment.java:324)
位于freemarker.core.Environment.process(Environment.java:302)
位于freemarker.template.template.process(template.java:325)
位于com.relevantcodes.extentreports.HTMLReporter.flush(HTMLReporter.java:173)
位于com.relevantcodes.extentreports.Report.flush(Report.java:468)
位于com.relevantcodes.extentreports.extentreports.flush(extentreports.java:900)
在com.exterro.fusion.selenium.controls.TestListener.onfish(TestListener.java:195)
位于org.testng.TestRunner.firevent(TestRunner.java:1239)
在org.testng.TestRunner.afterRun(TestRunner.java:1030)
位于org.testng.TestRunner.run(TestRunner.java:636)
位于org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
在org.testng.SuiteRunner.runSequential上(SuiteRunner.java:361)
位于org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
运行(SuiteRunner.java:268)
位于org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
位于org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
在org.testng.testng.runSuitesSequentially上(testng.java:1244)
位于org.testng.testng.runSuitesLocally(testng.java:1169)
位于org.testng.testng.run(testng.java:1064)
位于org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
位于org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
位于org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
java.lang.NullPointerException
at java.io.Writer.write(未知源)
在com.relevantcodes.extentreports.utils.Writer.write(Writer.java:21)上
位于com.relevantcodes.extentreports.HTMLReporter.flush(HTMLReporter.java:186)
位于com.relevantcodes.extentreports.Report.flush(Report.java:468)
位于com.relevantcodes.extentreports.extentreports.flush(extentreports.java:900)
位于com.exterro.fusion.selenium.controls.TestListener.onFinish(TestListener.java:195)
位于org.testng.TestRunner.firevent(TestRunner.java:1239)
位于org.testng.TestRunner.afterRun(TestRunner.java:1030)
位于org.testng.TestRunner.run(TestRunner.java:636)
位于org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
在org.testng.SuiteRunner.runSequential上(SuiteRunner.java:361)
位于org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
运行(SuiteRunner.java:268)
位于org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
位于org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
在org.testng.testng.runSuitesSequentially上(testng.java:1244)
位于org.testng.testng.runSuitesLocally(testng.java:1169)
位于org.testng.testng.run(testng.java:1064)
位于org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
位于org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
位于org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

我遇到了相同的错误。通过删除中的一个空行,问题得以解决 ExtentReports report.ExtentReport.extent.addSystemInfo。查看是否向属性值对添加任何空值