我正在研究一个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设置中将“在所有行上运行”更改为“仅运行一次迭代”也没有用。
答案 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
。这样可以确保每次循环时,数据表都会为循环的迭代选择正确的数据项。
尝试一下,如果您仍然遇到问题,请针对您的问题发表评论,我会尽力帮助您。