Question

Je cherche des idées pour déclencher les actions pour les menus dépliantes en utilisant QTP.

Je teste une application Web à l'aide QTP. L'application a "en cascade" ou hiérarchique menu fly-out.

par exemple. Options->Preferences

Alors que recodage QTP reconnaît le point final de la hiérarchie du menu (dire « Préférences »). Mais lors de l'exécution du test, la cuisson de la WebElement("Preferences").Click ne fonctionne pas.

Si je l'appelle Link("Options").FireEvent ("onmouseover") il tire vers le bas le menu, et après que je peux mettre en évidence l'élément Préférences, mais appeler le clic même après avoir tiré vers le bas le menu ne parvient pas à déclencher l'action de menu.

Des idées pour déclencher l'action cliquez sur ces éléments de menu serait utile.

Cordialement,
Adarsha

Était-ce utile?

La solution 2

Pour la raison de perdre multitâches tout en QTP est en cours d'exécution, je ne pas mis en œuvre avec suggesiton de Motti. Donc instaed j'ai fini par passer par le code HTML pour voir les événements de souris sont attendus par le script java. Il se trouve que je dois appeler les séquences ci-dessous:

Link("Options").FireEvent ("onmouseover")
WebElement("Preferences").FireEvent ("onmouseover")
WebElement("Preferences").FireEvent ("onClick")

Cette astuce fonctionne vraiment bien, mais le risque est ici si elles changent radicalement quelque chose (disons instaed de Litening à Cliquez si elles utilisent onMouseDown) Je dois modifier le script de test.

Autres conseils

Si Click ne fait pas le travail alors il y a probablement d'autres événements que l'application Web ATTEND qui ne sont pas simulées par QTP. Une façon de contourner cela est de tourner sur du Web REPLAY Device mode :

Setting.WebPackage("ReplayType") = 2 

Après cette ligne dans le test à chaque fois que QTP voit une étape de Click il rejouer en déplaçant la souris sur l'élément et de simuler un clic de sorte que tous les événements qui sont déclenchés par les êtres humains seront tirés.

Pour revenir au mode de lecture événement par défaut jeu "ReplayType" à 1.

J'ai une autre option. utiliser pour cliquer sur un objet.

Set objMenu = Browser("Browser").Page("Pagel").WebElement("Menu_ELM")
Set objDeviceReplay1 = CreateObject("mercury.devicereplay")
x = objMenu.GetROProperty("abs_x")
y = objMenu.GetROProperty("abs_y")
objDeviceReplay1.MouseClick x + 35 , y + 5,0
Set objDeviceReplay1 = Nothing

Voici ce que je l'ai fait avec un problème similaire:

Set desPrefLink = Description.Create
    desPrefLink("micclass").value = "Link"
    desPrefLink("innertext").value = "Preferences"

Browser(X).Page(Y).Link(desPrefLink).Click()

Il peut ne pas fonctionner avec un menu plus dynamique Javascript, cependant.

J'ai eu une situation similaire traitée de manière légèrement différente, cliquez d'abord sur le lien parent Options puis déclencher l'onclick FireEvent avec l'aide d'identifiant ordinal

eg: browser().page().link(options).click

browser().page().link("name:=preferences","html tag:=A","index:=X").firevent "onclick"

Ce serait idéalement charger le lien parent prévu et serait utile dans le déclenchement de l'événement d'incendie sur Hope droit- cette aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top