[Webtest] How to test an Excel content when the format is not Binary Excel?

Paul King Paul King <paulk@asert.com.au>
Tue, 08 May 2007 08:43:42 +1000


You could perhaps use some Groovy with Scriptom or perhaps Groovy plus
JExcel if it knows more about HTML-flavoured excel files than POI.

Koorosh Vakhshoori wrote:
> 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.java:83)
> 
>         at com.canoo.webtest.plugins.exceltest.RetryWithCapsPOIFSFileSystem.<init>(RetryWithCapsPOIFSFileSystem.java:22)
> 
>         at com.canoo.webtest.plugins.exceltest.AbstractExcelStep.createWorkbook(AbstractExcelStep.java:60)
> 
>         at com.canoo.webtest.plugins.exceltest.AbstractExcelStep.getExcelWorkbook(AbstractExcelStep.java:42)
> 
>         at com.canoo.webtest.plugins.exceltest.AbstractExcelSheetStep.getExcelSheet(AbstractExcelSheetStep.java:22)
> 
>         at com.canoo.webtest.plugins.exceltest.ExcelCellUtils.getExcelCellAt(ExcelCellUtils.java:23)
> 
>         at com.canoo.webtest.plugins.exceltest.AbstractExcelCellStep.getExcelCell(AbstractExcelCellStep.java:70)
> 
>         at com.canoo.webtest.plugins.exceltest.AbstractExcelCellStep.getCellValue(AbstractExcelCellStep.java:74)
> 
>         at com.canoo.webtest.plugins.exceltest.ExcelStoreCellValue.doExecute(ExcelStoreCellValue.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.java:43)
> 
>         at com.canoo.webtest.ant.TestStepSequence.doExecute(TestStepSequence.java:31)
> 
>         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(SingleCheckExecutor.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(SingleCheckExecutor.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(DefaultExecutor.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
> 
>  
> 
>  
> 
>  
> 
>  
> 
>  
>