QTP / UFT - 循环访问多个数据表

时间:2016-11-21 18:11:29

标签: qtp hp-uft

我对QTP / UFT比较陌生。我正在编写测试,需要在同一测试中使用Global和Local Data Sheet中的数据。

我的for循环类似于:

Datatable.GetSheet("Global")
RowCount = Datatable.GetRowCount
For Cntr = 1 to RowCount
    Datatable.SetCurrentRow(Cntr)
    msgbox Datatable("Form", dtGlobalSheet) 'Form is my column Name from Global Data Sheet'

    Datatable.GetSheet("Action1")
    RowCount2 = Datatable.GetRowCount
    For Cntr2 = 1 to RowCount2
        Datatable.SetCurrentRow(Cntr2)
        msgbox Datatable("Number", dtGlobalSheet) 'Number is my column Name from Action1 Data Sheet'
    Next
Next

我的列值从两张纸上搞砸了。

1 个答案:

答案 0 :(得分:1)

您需要将数据表分配给变量,以便更好地使用它。

  • 您正在呼叫Datatable.GetSheet("Global")但未将其分配到任何地方。
  • 当您使用Datatable.GetRowCount时,实际上并没有告诉UFT从哪个数据表获取行数,这可能是您的问题之一。
  • 在代码的最后,您使用的是msgbox Datatable("Number", dtGlobalSheet),但您应该使用msgbox Datatable("Number", dtLocalSheet)(假设您已在代码中的某处分配了这些变量)。

检查这个可能的解决方案(未经测试):

Dim dtGlobal : Set dtGlobal = Datatable.GetSheet("Global")
Dim dtLocal : Set dtLocal = Datatable.GetSheet("Action1")
RowCount = dtGlobal.GetRowCount
For Cntr = 1 to RowCount
    'Working with global datatable
    dtGlobal.SetCurrentRow(Cntr)
    msgbox dtGlobal.GetParameter("Form") 'Form is my column Name from Global Data Sheet'

    'Working with local datatable
    RowCount2 = dtLocal.GetRowCount
    For Cntr2 = 1 to RowCount2
        dtLocal.SetCurrentRow(Cntr2)
        msgbox dtLocal.GetParameter("Number") 'Number is my column Name from Action1 Data Sheet'
    Next
Next

PS。:在准确定义了哪些数据来自哪个数据表后,您可能需要检查循环以确保逻辑正确,因为我没有检查该部分。如果这对您有用,请告诉我。

快乐的编码。