UFT 11.53 在评估 a 是否>时给出不正确的答案 b



我正在构建一个脚本来测试礼品卡功能在一系列的电子商务网站,我遇到了一个令人沮丧的问题,UFT会说较小的数字大于较大的数字。该脚本在迭代之间打开和关闭浏览器,并从数据表中的新行提取站点URL。它的工作原理是评估卡片余额是否大于总数。下面是我遇到麻烦的代码:

vTotal=Browser("GLOBAL").Page("CHECKOUT_BILLING").WebElement("order-total").WebElement("Total").getroproperty("value")
for vt=1 to len(vTotal)
d=mid(vTotal,vt,1)
if isnumeric(d) then 
b=b&d
end if 
next
vGCBalance=Browser("GLOBAL").Page("CHECKOUT_BILLING").WebElement("GC_BALANCE").getroproperty("value")
for vg=1 to len(vGCBalance)
c=mid(vGCBalance,vg,1)
if isnumeric(c) then 
a=a&c
end if 
next
wait 3
If ( a) > ( b) = True Then
    msgbox ( a)&" Is Greater Than "&( b)
else
    msgbox ( b)&" Is Greater Than "&( a)
End If

我尝试了几种方法来设置"a"one_answers"b"的值。这包括使用描述性编程识别购物车总数和GC余额。我还使用regEXP行将数字与GetROProperty生成的字符串分开。我甚至尝试过将值写入数据表,并让比较程序读取这些值。

在所有情况下,如果我为a或b做一个消息框,它会显示正确的值。我使用了上面的方法,因为它返回的数字没有小数点。

似乎UFT是使用以前的答案IF THEN语句为每个网站(也许从第一次的答案)。最后,当a=16, b=100时,它会说a> bUFT缓存if then语句的答案吗?我的代码是错误的(我正在学习编程,因为我构建我的测试脚本,所以这是可能的)?

任何建议或建议将是伟大的!谢谢,罗伯特。

我的第一个猜测是你比较两个字符串,而不是两个数字。"&"操作符执行字符串连接,因此当您使用诸如"b=b&d"或"a=a&c"之类的语句时,您正在构建一个文本字符串。如果a = "16"且b = "100",则a大于两个字符串的字母比较结果,因为a中的第二个字符("6")大于b中的第二个字符("0")。

尝试强制数值比较。

If CInt(a) > CInt(b) Then
    MsgBox a & " is greater than " & b
Else
    MsgBox b & " is greater than " & a
End If

或者,您可以在构建完字符串后强制将变量重新计算为数字。

a = CInt(a)
b = CInt(b)

那么所有的future语句都将它们视为数字,而不是文本字符串。

在一个无关的注意事项上,我鼓励您使用更好的有意义的变量名。像"a"、"b"、"c"one_answers"d"这样的值并不能帮助任何人阅读您的代码并理解为什么一个变量与另一个变量不同。如果您只是为了这段代码片段的目的而这样做,请忽略。

你的代码也有可能被大大简化。如果您从'GetROProperty'读取的值只是十进制值(没有货币字符),您可以将它们直接转换为Double值类型并使用它们进行比较。示例

strTotal = Browser("GLOBAL").Page("CHECKOUT_BILLING").WebElement("order-total").WebElement("Total").getroproperty("value")
dblTotal = CDbl(strTotal)
strGCBalance = Browser("GLOBAL").Page("CHECKOUT_BILLING").WebElement("GC_BALANCE").getroproperty("value")
dblGCBalance = CDbl(strGCBalance)
If dblTotal > dblGCBalance Then
    MsgBox "Total '" & strTotal & "' is greater than GC Balance '" & strGCBalance & "'"
Else
    MsgBox "GC Balance '" & strGCBalance & "' is greater than or equal to Total '" & strTotal & "'"
End If

相关内容

最新更新