我正在构建一个脚本来测试一系列电子商务网站上的礼品卡功能,并且遇到了一个令人沮丧的问题,即 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”和“b”的值。这包括使用描述性编程识别购物车总数和 GC 余额。我还使用 regEXP 行将数字与 GetROProperty 生成的字符串分开。我什至尝试将值写入数据表并让比较读取这些值。
在所有情况下,如果我为 a 或 b 执行 msgbox,它会显示正确的值。我使用了上述方法,因为它返回的数字不带小数点。
似乎 UFT 正在为每个站点使用先前的答案 IF THEN 语句(可能是第一次的答案)。最终它会说 a > b when a=16 and b=100 UFT 是否缓存了 if then 语句的答案?我的代码错了吗(我在构建测试脚本时正在学习编程,所以有可能)?
任何建议或建议都会很棒!谢谢,罗伯特