使用数据表的UFT脚本仅重复运行第一行;不会考虑其余的行

时间:2019-03-14 15:08:46

标签: datatable qtp hp-uft

我正在研究一个UFT脚本,该脚本从全局数据表中读取值并将其输入到文本框中,然后执行验证。但是脚本仅读取第一个值,而不读取列中的其余值(并且将相同的值运行6次)。我知道我缺少一些基本的东西,但不能动弹了。你能帮忙吗?

length (data table)
-100
200
100.01
0
100
25

代码如下:

<opens the number dialog>

data_length = DataTable.GetRowCount 'returns 6 

for i=1 To data_length

swfWindow("main_client").SwfWindow("tallyDialog").WinEdit("Current Value: -000.00).Set DataTable.Value("length") 'expecting it to read and input first value.

swfWindow("main_client").SwfWindow("tallyDialog").ActiveX("Enter") 'click enter

avg_length = swfWindow("main_client").SwfWindow("tallyDialog").Check (Checkpoint("Value must be from 0 to 100))

If avg_length then

reporter.reportEvent micPass, "test passed"

Else

reporter.reportEvent micFail, "test failed"

End if

Next

我期望它对长度表中的所有6个值进行此迭代,但是对第一个值(-100)进行6次此迭代?

在UFT设置中将“在所有行上运行”更改为“仅运行一次迭代”也没有用。

1 个答案:

答案 0 :(得分:0)

这里有几个问题需要解决。这是一些可以满足您需求的代码,然后进行解释。

首先,将测试设置为仅运行一次迭代,因为您要在该迭代中遍历数据表。如果要避免代码中出现循环,则可以在“运行所有行”上进行设置,这样它将遍历数据表。

<opens the number dialog>

data_length = DataTable.GetRowCount 'returns 6 

for i=1 To data_length
    DataTable.SetCurrentRow(i)
    swfWindow("main_client").SwfWindow("tallyDialog").WinEdit("Current Value: -000.00).Set DataTable.Value("length") 'expecting it to read and input first value.
    swfWindow("main_client").SwfWindow("tallyDialog").ActiveX("Enter") 'click enter
    avg_length = swfWindow("main_client").SwfWindow("tallyDialog").Check (Checkpoint("Value must be from 0 to 100))
    If avg_length then
        reporter.reportEvent micPass, "test passed"
    Else
        reporter.reportEvent micFail, "test failed"
    End if
Next

请注意循环开始时的DataTable.SetCurrentRow命令,该命令将数据表行设置为循环索引i。这样可以确保每次循环时,数据表都会为循环的迭代选择正确的数据项。

尝试一下,如果您仍然遇到问题,请针对您的问题发表评论,我会尽力帮助您。