문제

스크립트를 구축하여 일련의 ECOM 사이트에서 선물 카드 기능을 테스트하고 UFT가 더 작은 숫자가 더 큰 숫자보다 큰 경우 좌절하는 문제를 해결하고 있습니다. 스크립트는 반복간에 브라우저를 열고 닫고 DataTable의 새 행에서 사이트 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 밸런스를 식별하는 것을 포함합니다. 또한 Getroproperty가 생성 한 문자열에서 숫자를 구분하기 위해 정규식 라인을 사용했습니다. DataTable에 값을 작성하고 비교가 그 값을 읽었습니다.

모든 경우 a 또는 b에 msgbox를 수행하는 경우 올바른 값을 보여줍니다. 나는 소수점이없는 숫자를 반환하기 때문에 위의 방법으로갔습니다.

UFT가 이전에 각 사이트의 진술 (어쩌면 답변이 처음부터)을 사용하는 것처럼 보입니다. 결국 a= 16 및 b= 100 일 때 a> b를 말할 것입니다. UFT가 IF 문장에 대한 대답을 캐싱하는 것입니까? 내 코드가 잘못되었습니다 (나는 테스트 스크립트를 작성하는 것처럼 프로그래밍을 배우는 것)?

어떤 제안이나 조언이 좋을 것입니다! 감사, 로버트

도움이 되었습니까?

해결책

내 첫 번째 추측은 두 개의 숫자가 아닌 두 개의 문자열을 비교하는 것입니다. "&"연산자는 문자열 연결을 수행하므로 "b= b & d"또는 "a= a & c"와 같은 명령문을 사용하는 경우 문자열 문자열을 구축하고 있습니다. a="16"및 b="100"이면 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)
.

모든 장래의 모든 명령문은 텍스트 문자열이 아닌 숫자로 취급됩니다.

관련이없는 메모에서는 더 나은 변수 이름을 사용하는 것이 좋습니다. "a", "b", "c"및 "d"와 같은 값은 사용자의 코드를 읽고 하나의 변수가 다른 변수와 다른 이유를 이해하는 데 도움이되지 않습니다. 이 코드 스 니펫의 목적을 위해 그렇게하는 경우 무시하십시오.

코드를 크게 단순화 할 수 있습니다. 'getroproperty'에서 읽는 값이 10 진수 값 (통화 문자 없음)이면, 이중 값 유형으로 직접 변환하고 비교를 위해 사용을 사용할 수 있습니다. 예

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