根据现有列中的值在QTP中动态添加行

时间:2015-02-23 04:07:08

标签: datatable qtp

是否可以在运行时在QTP数据表或Excel工作表上动态添加新行?它必须是动态的,因为添加新行取决于输入数据返回的数据行数。看起来没有任何方法可以在datatable或excel中添加行,所以我不知道如何处理这个问题。

数据表:6列,目前正在测试4个帐号,现在作为行,所以它看起来像这样:

第1栏,第2栏,第3栏,第4栏,第5栏,第6栏 帐户1 帐户2 帐户3 帐号4

应用程序:具有帐号作为输入的Web应用程序,可以返回多行数据。目前,如果帐号返回多行数据,则它会超过前一个条目。我需要它在上一行下创建一个新行(这样它不会覆盖前一个条目)和b。)在下一个帐户的行中输入以前的帐户信息。

以下是审核的伪代码:

Dim Rowcount, webrowcnt
Rowcount=datatable.getsheet"Sheet name".GetRowCount

For i=1 to Rowcount
Datatable.GetSheet"Sheet name".SetCurrentRow(i)
Browser("").Page("").Link("").Click
Browser("").Page("").WebEdit("").Set DataTable("Row1", dtLocalSheet)
Browser("").Page("").WebButton("").Click

webrowcnt=Browser("").Page("").WebTable("").RowCount

For n=3 to webrowcnt  (note: n=3 because the data I need starts on row 3)
If webrowcnt > 3 Then (note: this is where I want it to create a new row if there is more than 3 rows of data)
For i=4 to webrowcnt
some code here to create however many rows of data the account number has.
Next
End If
column1 = Browser("").Page("").WebTable("").GetCellData(n, 1)
DataTable("column1", dtLocalSheet)=column1
column2 = Browser("").Page("").WebTable("").GetCellData(n, 2)
DataTable("column2", dtLocalSheet)=column2
column3 = Browser("").Page("").WebTable("").GetCellData(n, 3)
DataTable("column3", dtLocalSheet)=column3
column4 = Browser("").Page("").WebTable("").GetCellData(n, 4)
DataTable("column4", dtLocalSheet)=column4
column5 = Browser("").Page("").WebTable("").GetCellData(n, 5)
DataTable("column5", dtLocalSheet)=column5
column6 = Browser("").Page("").WebTable("").GetCellData(n, 6)
DataTable("column6", dtLocalSheet)=column6

Browser("").Page("").Link("").click (note: link to return to home page to  restart on new account number)
Next

2 个答案:

答案 0 :(得分:0)

请尝试使用Datatable的 get set 方法的组合

rowNum=DataTable.GetCurrentRow
DataTable.setCurrentRow(rowNum+1)

请关注数据表并按F1键,检查UFT(QTP)中的语法。

希望这可以解决您的问题。

答案 1 :(得分:0)

您可以继续将值插入下一行,最后将插入的值导出到外部文件

for n=3 to webrowcnt
......some code.......
  If webrowcnt > 3  then 
    DataTable.SetCurrentRow(n) 'now value of n is 4 and so on
    DataTable.Value("parameter","sheet")="Value" 'fill any data you want
   ......some code.......
   end IF
......some code.......
next