liujintao00 发表于 2012-9-17 11:43:18

使用Call to Existing Action时,如何能保证子脚本中能正确导入excel数据

本帖最后由 liujintao00 于 2012-9-17 14:04 编辑

我使用的是10.00版本的QTP
问题具体描述如下:
1.Call to Existing Action 调用一个子脚本:RunAction "AddUser ", oneIteration,在datable中出现一个新的sheet:AddUser :
2.子脚本中导入excel数据的语句是DataTable.ImportSheet "D:\xe\case\用户管理.xls","新建用户","AddUser",但是datable中不存在这个sheet,对应的sheet其实是AddUser
这样执行脚本时,DataTable.ImportSheet "D:\xe\case\用户管理.xls","新建用户","AddUser"就不会向期望的sheet中插入数据。

请问要怎么解决?

我原本想修改调用子脚本的属性的Action Properties.但是添加Call to Existing Action 时没有“Edit new Action Properties”。子脚本属性的Action Properties项是不可修改的

hsjzfling 发表于 2012-9-17 15:14:03

读下代码就知道了,现在的表名已经不叫"AddUser"了,而是叫"AddUser ". 调用External Action时为了有所区分,都会自动做出这样的修改

liujintao00 发表于 2012-9-18 09:33:43

哥哥,你是在重复描述了一下现象。
我是问怎么能保证子脚本能够正确导入数据。总不能先把子脚本的内容改了以后,再进行调用吧
回复 2# hsjzfling

geek 发表于 2012-9-18 15:32:44

同二楼的意思,现在你的Sheet名是"AddUser "了.你可以改一下导入语句为:DataTable.ImportSheet "D:\xe\case\用户管理.xls","新建用户","AddUser "试试?..

liujintao00 发表于 2012-9-18 17:13:04

回复 4# geek

使用Call to Existing Action的初衷是连续执行多个子脚本。如果为了迁就主脚本修改的话,子脚本就要大改,所有涉及到sheet名称的地方都要调整。
而且这会导致单独执行子脚本时回报错(同样是找不到sheet)

liujintao00 发表于 2012-9-18 17:17:12

问题我已经解决了:
1.在子脚本用DataTable.AddSheet增加一个sheet ,excel的数据导入到这个sheet,使用for循环读取sheet中的值给对应的变量赋值
2.使用EOM直接操作excel
这两种方式都没有使用被重命名的子脚本sheet,不会出现找不到sheet的情况,只不过代码量要稍微增加几行
页: [1]
查看完整版本: 使用Call to Existing Action时,如何能保证子脚本中能正确导入excel数据