Hi guys,

  I need your advice. I have a web application which when I click on
submit button generates content which is HTML format but the returned
content type is set to 'application/vnd.ms-excel'. The idea is to have
the browser treat the down loaded content as Excel and forward it to
Excel which would read and display it. The application works as
expected, of course only on Windows or on any platform that have an
Excel compatible application which supports reading HTML format. Now
understand this limitation and we are fine with it. However, when I use
the WebTest Excel steps to validate the generated content, I get the
following error:

 

Invalid header signature; read 723401728380766730, expected
-2226271756974174256

 

The stack trace is:

 

java.io.IOException: Invalid header signature; read 723401728380766730,
expected -2226271756974174256
        at
org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockReader.
java:88)
        at
org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.j
ava:83)
        at
com.canoo.webtest.plugins.exceltest.RetryWithCapsPOIFSFileSystem.<init>(
RetryWithCapsPOIFSFileSystem.java:22)
        at
com.canoo.webtest.plugins.exceltest.AbstractExcelStep.createWorkbook(Abs
tractExcelStep.java:60)
        at
com.canoo.webtest.plugins.exceltest.AbstractExcelStep.getExcelWorkbook(A
bstractExcelStep.java:42)
        at
com.canoo.webtest.plugins.exceltest.AbstractExcelSheetStep.getExcelSheet
(AbstractExcelSheetStep.java:22)
        at
com.canoo.webtest.plugins.exceltest.ExcelCellUtils.getExcelCellAt(ExcelC
ellUtils.java:23)
        at
com.canoo.webtest.plugins.exceltest.AbstractExcelCellStep.getExcelCell(A
bstractExcelCellStep.java:70)
        at
com.canoo.webtest.plugins.exceltest.AbstractExcelCellStep.getCellValue(A
bstractExcelCellStep.java:74)
        at
com.canoo.webtest.plugins.exceltest.ExcelStoreCellValue.doExecute(ExcelS
toreCellValue.java:48)
        at com.canoo.webtest.steps.Step.execute(Step.java:104)
        at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at
com.canoo.webtest.ant.TestStepSequence.executeSteps(TestStepSequence.jav
a:43)
        at
com.canoo.webtest.ant.TestStepSequence.doExecute(TestStepSequence.java:3
1)
        at com.canoo.webtest.steps.Step.execute(Step.java:104)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at
com.canoo.webtest.ant.WebtestTask.execute(WebtestTask.java:164)
        at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
        at
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleChe
ckExecutor.java:37)
        at
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
        at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
        at
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleChe
ckExecutor.java:37)
        at
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
        at
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:107)
        at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
        at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecut
or.java:40)
        at
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
        at org.apache.tools.ant.Main.runBuild(Main.java:668)
        at org.apache.tools.ant.Main.startAnt(Main.java:187)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)

 

After some investigation, I have identify the source to be Jakarta POI,
which WebTest Excel step uses to read the Excel content where it only
expects to see binary Excel format and not HTML. This is how Jakarta POI
works and I am not expecting them to change it, but in the Web context a
browser looks at the content type and passes the control to the
application that is registered to handle such content. In this case, as
I mentioned before it would pass it to Excel where it sees the HTML
content and would parse it as such and displays it in Excel context. Now
could anyone suggestions a way to write my WebTest so it would test the
generated content?

 

Thanks,
Koorosh

 

 

 

 

 

Reply via email to