Буду очень признателен, если кто-нибудь сможет предложить решение для этого.
У меня есть простая функция, которая ожидает открытия браузера на странице, содержащей веб-список, каждое значение которого представляет учетную запись. Когда выбран аккаунт, отображаются его продукты (если есть).
Цель функции - получить индекс учетной записи с продуктами (первым найти) или -1, если таковых нет.
Проблема, которую я не могу понять, что является причиной этого, состоит в том, что функция вернет правильный результат, когда я отлаживаю его, то есть пошагово запускаю код с использованием F10, но вернет неправильный результат если я буду бегать регулярно (F5). Такое поведение является последовательным, и функция извлекает один и тот же результат каждый раз для каждого типа прогонов, что означает, что это не ошибка, а просто функция возвращает случайный ответ.
Это функция:
' @return: a random account index with products if one exists
' otherwise returns -1
Public Function getRandomAccountWithProducts()
On Error Resume Next
Set Page1 = Browser("micclass:=browser").Page("micclass:=Page")
Set br = Browser("micclass:=Browser")
originalURL = br.GetROProperty("URL")
br.Navigate Environment.Value("SOME URL") & "REST OF URL"
br.Sync
Page1.WebList("name:=accountId").Select "#1"
br.Sync
' Display only products
Page1.WebRadioGroup("name:=name0").Click
Page1.WebList("name:=name1").Select "Display None"
Page1.WebList("name:=name2").Select "Display None"
Page1.WebButton("value:=Apply","visible:=True").Click
' Init
numOfAccounts = Page1.WebList("name:=accountId").GetROProperty("items count") - 1
If numOfAccounts < 1 Then
getRandomAccountWithProducts = -1
Reporter.ReportEvent micFail, "Number of accounts","There are no accounts. No account with products exists"
Exit Function
End If
hasProducts = false
accountIndex = 1
' Get account with products
While ((Not hasProducts) AND (accountIndex =< numOfAccounts))
' Return account if has products
If Page1.WebList("name:=webListName","index:=0","micclass:=WebList","visible:=True").Exist(5) Then
hasProducts = true
End If
If (Not hasProducts) Then
accountIndex = accountIndex + 1
Page1.WebList("name:=accountId").Select "#" & accountIndex
End If
Wend
br.Navigate originalURL
Set Page1= Nothing
Set br = Nothing
' If no account has products, report and exit, else return selected account index
If Not hasProducts Then
Reporter.ReportEvent micFail,"Accounts","No account has products."
getRandomAccountWithProducts = -1
Else
getRandomAccountWithProducts = accountIndex
End If
If Err<>0 Then
errorMessage = "Error number: " & Err.Number & vbNewLine & "Error description: " & Err.Description & vbNewLine & "Error source: " & Err.Source
Reporter.ReportEvent micFail,"Run Time Error",errorMessage
Err.Clear
End If
On Error GoTo 0
End Function
Я работаю на Pentium 4, 3,2 ГГц, 2 ГБ ОЗУ, Win XP, SP 3, IE 7, QTP 10.0 Build 513
Спасибо!