Amélioration du comportement d'enregistrement avec les sous-éléments (SubItem)

Les sous-éléments (SubItem) sont des parties d'un contrôle testé définies par Functional Tester. Dans certains cas, vous obtenez de meilleurs résultats en enregistrant l'interaction utilisateur avec les détails des sous-éléments (SubItem) au lieu de ne procéder à l'enregistrement qu'avec les informations de coordonnées. L'inconvénient des informations de coordonnées, c'est que lorsque les parties d'un contrôle sont redimensionnées ou réorganisées, il se peut que la lecture des actions utilisateur ne renvoient pas les mêmes résultats.

Avant de commencer

Par exemple, dans un contrôle table dont la largeur des colonnes peut être redimensionnée, il n'est pas intéressant d'enregistrer les clics avec des coordonnées lors de la lecture si la largeur des colonnes change.

Functional Tester possède un ensemble de sous-éléments (SubItem) prédéfinis que le proxy peut utiliser pendant l'enregistrement. Lors de l'enregistrement, le proxy détermine le sous-élément (SubItem) à un point donné et envoie les détails du sous-élément (SubItem) avec la méthode d'action utilisateur pour l'objet de test (TestObject). Lors de la lecture, le proxy détermine à nouveau les coordonnées du sous-élément (SubItem) et l'action utilisateur est lue.

Vous pouvez étendre les méthodes répertoriées dans le Tableau 1 :
Tableau 1. Méthodes de proxy extensibles
Java .Net
System.Collections.ArrayList GetActionArgs(System.Drawing.Point point) void (IMouseActionInfo action)
System.Drawing.Rectangle GetSubitemRect(Rational.Test.Ft.Script.Subitem subitem) java.awt.Rectangle getScreenPoint (Subitem subitem)

Enregistrement des méthodes avec sous-éléments (SubItem)

Lors de l'enregistrement d'un événement, la méthode ProcessMouseEvent est appelée. Le proxy détermine ensuite les sous-éléments (SubItem) appropriés à certains points et ces sous-éléments (SubItem) sont enregistrés dans le cadre de l'événement.

Avant de commencer

Le code suivant illustre la façon dont l'événement est enregistré :
listBox.click(atText("Item1"));

Dans cet exemple, l'événement est click. Le paramètre atText("Item1") est le sous-élément (SubItem) que le proxy trouve à ce point. Dans le cas de .Net, l'API GetActionArgs() renvoie un ou plusieurs sous-éléments (SubItem) au contrôle. Le sous-élément (SubItem) à utiliser est propre au contrôle.

L'exemple suivant illustre l'implémentation Java de l'enregistrement des méthodes avec sous-éléments (SubItem) :

{
	. 
	.
        Vector args = new Vector(20);
	SubItem subItem = null;
	IMouseEventInfo event0 = action.getEventInfo(0);
	Point firstPoint = new Point ( event0.getX(), event0.getY() );
	Point firstPointToList = new Point ( firstPoint.x, firstPoint.y );
	int itemIndex = locationToIndex(firstPointToList);
	String itemText = ((java.awt.List)theTestObject).getItem(itemIndex);
	if (itemText!= null && ! itemText.equals("") )
		 subItem = new Text(item);
	else
		subItem = new Index(atIndex);
	.
	.
	args.addElement(subItem);
	.
	.
	}

L'exemple suivant illustre l'implémentation .Net de l'enregistrement des méthodes avec sous-éléments (SubItem) :

protected override System.Collections.ArrayList GetActionArgs(System.Drawing.Point point)
{
	System.Collections.ArrayList args = new System.Collections.ArrayList() ; 
	Subitem subitem = null ;
	System.Drawing.Point clientPoint = ((Control)theTestObject).PointToClient(point) ;
	int itemIndex = ((ListBox)theTestObject).IndexFromPoint(clientPoint) ;
        string itemText = ((ListBox)theTestObject).GetItemText(item);

	if (itemText == null || itemText.Length == 0)
	{
	        // l'élément ne comporte pas de texte ; par conséquent, il est nécessaire de générer un index
		subitem = new Rational.Test.Ft.Script.Index(itemIndex) ;
	}
	if ( subitem != null )
	{
		args.Add(subitem) ;
	}

	return args ;
}

Lecture des méthodes avec sous-éléments (SubItem)

Lors de la lecture, le proxy doit rechercher les coordonnées d'écran d'un sous-élément (SubItem) afin de lire l'action utilisateur.

Avant de commencer

L'exemple suivant illustre l'implémentation Java de la lecture des méthodes avec sous-éléments (SubItem) :

public void click(MouseModifiers modifiers, Subitem subitem)
{
	.
	.
	Point pt = this.getScreenPoint(subitem);
	new Screen().click( modifiers, pt);
	.
	.
}

public java.awt.Rectangle getScreenPoint (Subitem subitem) 
{
	int index = getItemIndex(subitem);
	if ( index == -1 )
		return null;
        java.awt.Rectangle rectCell = getCellBounds(index);
	java.awt.Rectangle rectScreen = this.getScreenRectangle();
	return new java.awt.Rectangle 
	( rectScreen.x + rectCell.x, rectScreen.y + rectCell.y, 
	  rectCell.width, rectCell.height );

}

L'exemple suivant illustre l'implémentation .Net de la lecture des méthodes avec sous-éléments (SubItem) :

protected override System.Drawing.Rectangle GetSubitemRect(Rational.Test.Ft.Script.Subitem subitem)
{
	int index = GetItemIndex(subitem) ;		
	return ((ListBox)theTestObject).GetItemRectangle(index) ;
}

Que faire ensuite

Une fois le code de proxy développé et déployé, les méthodes enregistrées comportent les sous-éléments (SubItem) appropriés et la lecture s'exécute comme prévu.

Retour d'informations