Selenium webdriver 提供的文件ExtentReports.html不是有效的扩展数据块文件。分析失败,当前报告中将不会列出所提供文件中的测试
我面临ExtentReports.html文件的问题,该文件声明它不是有效的扩展数据块文件 TestNG的默认侦听器用于生成数据块报告。如其他问题所述,我在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
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。查看是否向属性值对添加任何空值