Automation qtp无法根据excel工作表中“是”状态的输入调用正确的操作

Automation qtp无法根据excel工作表中“是”状态的输入调用正确的操作,automation,qtp,Automation,Qtp,我试图调用一些操作,这取决于是的状态,并使用列名,例如登录名、页眉、页脚等,如下表所示 下面是代码:跳过excel加载,每个列名的其他部分和操作都存在,例如登录名、页眉、页脚等 iRowCount= DataTable.GetSheet("Main").GetRowCount() iColumnCount=DataTable.GetSheet("Main").GetParameterCount For iR = 1 To iRowCount DataTable.SetCurrentR

我试图调用一些操作,这取决于是的状态,并使用列名,例如登录名、页眉、页脚等,如下表所示

下面是代码:跳过excel加载,每个列名的其他部分和操作都存在,例如登录名、页眉、页脚等

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
即使第二行的页脚不是Yes,仍然会调用该操作

我使用Print语句来显示动作名称 输出是

Login
Header
Footer
SecondaryNavigation
Login
Header
Footer
SecondaryNavigation
但是当我不使用

RunAction sModule, oneIteration
然后输出变为

Login
Header
Footer
SecondaryNavigation
Login
Header
Cookiemessage
SecondaryNavigation
我无法找出问题所在,当我不调用操作时,代码工作正常,但是当我使用操作调用执行时,它遵循第一行状态而不是第二行状态,您隐藏了C列

所以页脚列的索引实际上是6,而不是5

因此,循环应该从6迭代到列计数,而不是5

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

即使第二行的页脚不是Yes,操作仍然是 被叫


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

@Amit,请再次检查代码,ucasebComponent=Yes,希望您理解此语句的作用,它将bComponent转换为大写并比较大写的YES可能是,在调用该操作时,所有当前数据表行都会重新设置为QTP认为应该在迭代设置中重置为通常显示的行,以及当前迭代的内容。一些QTP版本可以做到这一点;年长的人不会。如果您将行号传递给操作,并传递给其中的SetCurrentRow,它可能会起作用。感谢您的反馈,但这不是问题所在。问题在于输出,如果您检查代码,当我使用RunAction sModule时,oneIteration的输出不同,当我不使用RunAction sModule时,oneIteration的输出不同,代码只在第二行运行。