Excel数据导入到datatable之后,运行代码获取的数据会与实际值不一致
具体问题如下:说明:红色的两行代码对应了两种方式不会同时运行,运行第一种时注释第二种,反之亦然
1.当我运行第二种方式时,从excel文件导入的数据与在Organ_Name=datatable.Value("机构名称","修改机构")这行代码中获取的均一致,但是使用第一种方式时刚开始运行获取的数据会与excel一致,但是从某一条数据后获取到的数据会与excel当前行不一致而是固定成某个值了。即使我stop之后重新开始也是一样,除非关闭QTP重新开始运行代码。
2.但是使用name1=DataTable.GetSheet("修改机构").GetParameter("机构名称").ValueByRow(i)这一行代码时,无论使用哪种方式获取的数据均与excel表中的数据一致
我能够找到办法但是不太清楚这个原因是什么,具体影响的因素是调用其他有参数的action,从表中获取数据的方式datatable.Value("机构名称","修改机构")。
附加代码:
Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("leftFrame").Link("系统管理").Click
Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("leftFrame").Link("机构管理").Click
'参数依次为:导入文件路径,文件的Sheet名称,被导入的action名称
Datatable.ImportSheet "D:\QTP\Tests\测试数据文件\1.xls","Sheet1","修改机构"
RowCount=datatable.GetSheet("修改机构").GetRowCount
For i=1 to RowCount
Organ_Name=datatable.Value("机构名称","修改机构")
RunAction " 查询机构", oneIteration,""& Organ_Name'<第一种方式>
RunAction " 查询机构", oneIteration'<第二种方式>
name1=DataTable.GetSheet("修改机构").GetParameter("机构名称").ValueByRow(i)
datatable.GetSheet("修改机构").SetNextRow
Next
查询机构的代码:
'以下2个是action"查询机构"的输入参数
Organ_No=Parameter("Input_OrganNo")
Organ_Name=Parameter("Input_OrganName")
Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("leftFrame").Link("系统管理").Click
Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("leftFrame").Link("机构管理").Click
Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("机构列表").WebEdit("organ.organId").Set "9000"
Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("机构列表").WebEdit("organ.organName").Set ""& Organ_Name '<第一种方式>
Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("机构列表").WebEdit("organ.organName").Set "123" '<第二种方式>
Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("机构列表").WebButton("查 询").Click
没人回答自己顶上去啊 用 DataTable.GetCurrentRow 看下当前活动的行是不是没有变化。
datatable.GetSheet("修改机构").SetNextRow这种设置方法受当前活动行影响,不容易控制,
datatable.GetSheet("修改机构").SetCurrentRow(i)
dyyouai 发表于 2014-10-23 12:35
用 DataTable.GetCurrentRow 看下当前活动的行是不是没有变化。
datatable.GetSheet("修改机构").SetN ...
我试了下DataTable.GetCurrentRow用这个去获取当前行,发现行数是对的。我现在一开始运行就错了,开始就获取第二行的数据了。 T_LONE 发表于 2014-10-23 14:10
我试了下DataTable.GetCurrentRow用这个去获取当前行,发现行数是对的。我现在一开始运行就错了,开始就 ...
i = 0 开始 才是第一行 dyyouai 发表于 2014-10-23 16:04
i = 0 开始 才是第一行
datatable里面要从第一行开始的。。。i=1 dyyouai 发表于 2014-10-23 16:04
i = 0 开始 才是第一行
不过今天试了下可以了, 应该是你说的.SetNextRow这种设置方法受当前活动行影响。 只要datatable.GetSheet("修改机构").SetCurrentRow (i)就能解决
页:
[1]