qtp无法调用正确的操作,具体取决于excel表中“是”状态的输入

时间:2015-02-19 08:01:41

标签: automation qtp

我正在尝试根据“是”状态调用一些操作并使用列名称,例如Login,Header,Footer等,如下表(link

Image of the excel sheet

下面是代码:(跳过excel加载和其他部分)和每个列名称的Action,例如Login,Header,Footer等

iRowCount= DataTable.GetSheet("Main").GetRowCount()
iColumnCount=DataTable.GetSheet("Main").GetParameterCount

For iR = 1 To iRowCount
    DataTable.SetCurrentRow iR
    bRun=Datatable.Value("Run","Main")
    If UCase(bRun)= "YES" Then
        For iC = 5 To iColumnCount
         bComponent= Datatable.Value(iC,"Main")

         If ucase(bComponent) ="YES" Then
            sModule=DataTable.GetSheet("Main").GetParameter(iC).Name
            print sModule
            RunAction sModule, oneIteration

         End If

        Next

    End If  
Next

即使第二行中的页脚不是“是”,仍然会调用该操作

我使用Print Statement来显示Action名称  输出是

Login
Header
Footer
SecondaryNavigation
Login
Header
Footer
SecondaryNavigation

然而,当我不使用

RunAction sModule, oneIteration

然后输出变为

Login
Header
Footer
SecondaryNavigation
Login
Header
Cookiemessage
SecondaryNavigation

我无法找出错误,当我不调用操作时,代码工作正常,但是当我使用Action调用执行时,它遵循第1行状态而不是第2行状态< / p>

1 个答案:

答案 0 :(得分:0)

您隐藏了C列。

因此“页脚”列的索引实际上是6而不是5.

所以你的循环应该从6迭代到列数,而不是5。

Windows领域许多IT年的经验:继续寻找宽度= 0的Excel列,否则您将浪费生命寻找实际上缺少信息或错误的列假设的错误:O

  

即使第二行中的页脚不是“是”仍然是动作   被称为

这是因为实际上,由于刚刚概述的怪癖,正在使用“Header”单元格值,并且该行的“是”。