3.4 Excel—数据驱动必备利器
阶段要点
● EOM模型简介。
● 熟练掌握EOM对Excel的自动化操作。
● 详细分解如何动态加载宏代码并应用于自动化过程中。
● 实现更多高级的Excel与QTP的联动技巧。
3.4.1 利用EOM自动化EXCEL
3.4.1.1 EOM模型简介
EOM:全称为Excel Automation Object Model 即为Excel的自动化模型对象
在自动化测试过程中,经常会把数据和脚本进行分离,也就是平时所说的数据驱动模型,而在QTP中经常会使用参数化的方式,并结合QTP的DataTable对象来对数据表进行操作和储存数据。那读者一定会问,既然QTP已经存在了对数据表的操作,并且已经可以非常容易地使用了,为什么这里还要介绍EOM呢?其实本人也和大家想的一样,对于QTP的DataTable已经可以非常出色地满足基本的需求了,并且mercury当初对这块东西也封装的不错,使用过的朋友觉得很好用。但是作为一个自动化测试工程是来说,是否想过一个问题:在大多数情况下数据准备、环境准备都是由自动化测试人员来完成的,当我们手里有一份数据量较大的数据表,并且此数据表的格式并不是符合QTP读取DataTable的规范格式,那下一步该怎么办呢?
这里提供两种方式供大家选择。
● 通过编写Excel Macros把数据表的格式转化为QTP中DataTable的格式。
● 直接抛弃DataTable功能,使用EOM来对数据表进行操控。
两种方式都是不错的解决方案,但是个人比较喜爱第二种。因为第一种方式中间多了一个转化Excel格式的步骤,第二种方式直接根据数据表格式进行数据读取。读者可以根据自己的实际情况进行选择使用。接下来就看一下EOM到底有哪些“绝活”可以把Excel“玩于鼓掌之中”。
3.4.1.2 Excel Automation
前面已经讲到了EOM是一个可以自动化Excel的自动化模型对象,既然需要使用EOM就必须先要对其进行引用,引用完毕之后才可以对其封装的所有方法进行调用,并对Excel进行自动化。当然引用一个COM组件对象时,必须要确定此组件对象的组件名和类名,Excel的组件名和类名分别为Excel和Application。确定好这些之后,就可以创建Excel的自动化模型了,脚本如下所示:
‘创建Excel自动化模型对象 Set excelApp = CreateObject("excel.application") |
执行结果:
当在VBSedit的编辑区域里输入以上脚本后,可以看到在VBSedit的Object Browser视图中自动添加了一本书的图标,如图3-30所示。
图3-30
从图3-30中可以看出,Excel自动化模型已经被成功引用加载到VBSedit中,也就是说EOM下的所有封装方法和对象都已经可以调用。为了能够顺利地讲解后续内容,此处首先要让读者明白两个概念,这两个概念就是Book和Sheet。虽然这是一个比较基础的概念,但经常发现许多同行会混淆这个概念。
Book与Sheet的区别。
Book是Excel的一个最大的模块单元,具体点就是一个Excel的文件,也就是一个Xls文件。这里需要注意的是,Excel Book和Word Book两者之间有着一个非常大的区别。细心的读者应该就会在平时的操作中发现,在打开多个Excel Book时(也就是打开多个xls文件),Excel会自动把当前所有打开的Excel Book都归类在一个主窗口中,这个主窗口同时也已经绑定了所有的子Book窗口,要创建Excel Book就必须要有主窗口,要关闭主窗口就必须关闭所有子窗口。也正是因为这个原因,很多时候才会遇到,当关闭一个主窗口时,会提示保存所有的Excel Book。Sheet是Book下的一个分类子模块,在每个Book下默认都会有3个Sheet,用户可以自动进行添加与删除。