Je serais extrêmement reconnaissant si quelqu'un pouvait proposer une solution pour cela.QTP 10 - Une fonction renvoie des résultats différents pour les mêmes données dans les modes d'exécution et de débogage
J'ai une fonction simple qui attend un navigateur pour être ouvert sur une page contenant une liste web que chaque valeur de celui-ci représente un compte. Lorsqu'un compte est sélectionné, ses produits (le cas échéant) sont affichés.
L'objectif des fonctions est de récupérer un index d'un compte avec des produits (le premier à trouver) ou -1 s'il n'y en a aucun. Le problème, dont je n'arrive pas à comprendre la cause, est que la fonction retournera le bon résultat quand je la déboguerai - ce qui signifie exécuter le code pas à pas en utilisant F10, mais retournera un mauvais résultat si je vais courir régulièrement (F5). Ce comportement est cohérent et la fonction récupère le même résultat à chaque fois pour chaque type d'exécution, ce qui signifie que ce n'est pas un bogue qui fait que la fonction renvoie une réponse aléatoire.
C'est la fonction:
' @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
Je suis en cours d'exécution sur le Pentium 4, 3,2 GHz, 2 Go de RAM, Win XP, SP 3, IE 7, QTP 10.0 Build 513
Merci!
Merci pour votre réponse. Je suis désolé mais il semble que je n'étais pas totalement clair à ce que le problème semble être. En fait, la propriété "nombre d'éléments" fonctionne correctement et j'obtiens le nombre correct. La partie problématique semble être: 'Retour du compte si a des produits Si Page1.WebList ("name: = nomListeWeb", "index: = 0", "micclass: = WebList", "visible: = True") .Existe (5) Puis hasProducts = true Fin Si –
La question est ce qui fait la différence? Comme vous pouvez le voir, j'ai ajouté une attente pour l'existence mais sans amélioration. Merci, Alon –
@Alon, La chose qui pourrait faire la différence est que lorsque vous êtes en mode débogage, le focus passe à QTP à chaque étape et ne reste pas sur le navigateur. – Motti