我正在构建一个脚本,用于测试一系列ECOM网站上的礼品卡功能,并击中令人沮丧的问题,其中UTE将说较小的数字大于更大的数字。 脚本将打开并关闭浏览器在迭代之间,并将站点URL从DataTable中的新行提取。如果卡余额大于总计,它会达到评估的程度。 这是我有问题的代码:

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生成的字符串中分隔数字。我甚至甚至尝试将值写入DataTable并具有比较读取这些值。

在所有情况下,如果我对a或b执行msgbox,它会显示正确的值。我采用上述方法,因为它返回没有小数点的数字。

似乎UFT正在使用以前的答案如果每个站点的语句(也许是第一次答案)。最终它会说a> b当a= 16和b= 100时 UFT将答案缓存到ifhone语句的答案吗?是我的代码(我正在学习编程,因为我建立了我的测试脚本,所以它是可能的)?

任何建议或建议都会很棒! 谢谢, 罗伯特

有帮助吗?

解决方案

我的第一次猜测是你比较两个字符串,而不是两个数字。 “&”运算符执行字符串连接,因此当您使用像“B= B&D”或“A= A&C”等语句时,您正在构建一串文本。如果a=“16”和b=“100”则大于来自两个字符串的字母比较,因为(“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)
.

然后,所有未来的语句都会将它们视为数字,而不是文本字符串。

在一个不相关的票据上,我会鼓励您使用更好的变量名称意味着什么。像“a”,“b”,“c”等值,“d”不帮助任何人读取您的代码并理解为什么一个变量与另一个变量不同。如果你只是这样做的话,就是为了这个代码片段的目的。

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

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
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top