Faire défiler l'écran : Méthodes de scroll et swipe

Up TO DATE

 

Introduction

Il existe deux types de méthodes pour faire défiler l'écran : les méthodes “scroll” et les méthodes “swipe”.

Entre les deux types, il y a une différence de gestuelle. Pour un scroll, le doigt appuie sur l'écran et glisse en restant appuyé, pour un swipe, le doigt glisse sur l'écran sans rester appuyé.

Il existe aussi une différence fondamentale entre un scroll et un swipe venant du framework d’automatisation. Les méthodes de “swipe” ne se basent sur aucun élément de la vue mais seulement sur des coordonnées d'écran alors que toutes les méthodes de scroll s’appuient sur le premier élément de la vue qui est “scrollable”. Si vous recherchez un texte avec un scroll il se peut que le texte ne soit pas dans le premier élément de la vue qui est “scrollable” et ne soit pas trouvé, de même pendant le scroll, un rafraichissement de la vue peut parfois pertuber la poursuite du scroll car un autre élément scrollable peut apparaître.

Si ce que vous souhaitez faire est aller à un certain endroit dans la page sans que le geste n’ait d’importance, vous pouvez privilégier les méthodes de type swipe.

Focus sur le swipe

Le swipe est un glissé du doigt qui s’effectue entre un point A et un point B de l'écran. L’ image suivante nous permet de représenter les coordonnées de ces 2 points sur un axe d’abscisse (X) et un axe d’ordonnée (Y). Les méthodes de swipe GDSL définissent les coordonnées des points A et B en pourcentage de largeur de l'écran pour l’abscisse et en pourcentage de hauteur de l'écran pour l’ ordonnée.

Ainsi sur l’exemple les coordonnées sont : A (X 90%, Y 50%) et B (X 10%, Y 50%).

Dans la doc du GDSL on utilisera les variables suivantes pour A (percStartX, percStartY) et pour B (percEndX, percEndY)

 

Ce geste de swipe permettant d’aller vers le bas de l'écran pourrait être effectué par les méthodes GDSL suivantes :

# swipeDownward(percX, percStartY) : les paramètres sont optionnels # percX par défaut est 50. Les 2 points A et B auront l'absisse 50% (percStartX = percEndX = 50) # percStartY par défaut swipe des coordonnées A (X 50%, Y 90%) aux coordonnées B (X 50%, Y 10%). # Ce sont les valeurs par défaut de la méthode, on note que percEndY n'est pas à renseigner dans # cette méthode car il est toujours fixé à 10% swipeDownward # swipeDownward(percX, percStartY) swipeDownward,50,90 # swipeVertical(percStartY, percEndY, percX) swipeVertical,90,10,50

Focus sur le Scroll

Cas des sites web

L’image précédente est le dump du site web greenspector.com réalisé avec uiautomatorviewer. Comme pour tous les sites web, l’application Chrome sur le téléphone interprête le site web à l’aide d’une webview.

Pour les sites web, il y a souvent un élément du dump avec la classe “android.webkit.Webview” avec l’information scrollable = true. Cet élément est en général le premier élément du dump qui est “scrollable”.

On pourra donc faire défiler l'écran avec les méthodes de type scroll

 

Cas des applications mobile

Pour les applications, en général il y a un élément du dump avec la classe “android.support.v7.widget.RecyclerView” qui est scrollable.

 

Cas d’usage

Voici une figure qui représente les méthodes qui peuvent être utilisées pour faire défiler l'écran dans le sens souhaité

Cas d' usage 1 : Je veux aller en bas de l'écran

Problématique 1 : Je veux simplement faire défiler mon écran vers le bas, j’ai besoin d’une méthode simple d’usage sans paramètres

Voici les 2 méthodes les plus simples sans trop avoir à réfléchir

# Swipe des coordonnées A (X 50%, Y 90%) aux coordonnées B (X 50%, Y 10%) swipeDownward # Défilement de l'écran vers le bas scrollDownward

Problématique 2 : Lorsque je swipe, l’ automatisation semble cliquer sur un élément au lieu de faire le swipe

Dans ce cas, on peut décaler le swipe vers la gauche ou la droite pour que le geste ne soit plus central avec X 50%.

# Swipe des coordonnées (X 30%, Y 90%) aux coordonnées (X 30%, Y 10%) swipeDownward,30

 

Problématique 3: Je veux descendre dans l'écran en choisissant la longueur de défilement, je n’ai pas besoin d’aller aussi bas que la méthode par défaut

Plus la différence d’ ordonnées entre le point A et le B est important, plus l'écran va défiler vers le bas.

Exemple

 

Problématique 4 : Pour mes différentes itérations de test, à chaque fois que je swipe, je n’arrive pas toujours au même endroit dans l'écran ce qui bloque mon automatisation

Dans ce cas, il faut utiliser la méthode qui permet d’entièrement définir le swipe et de changer la durée du scroll (vitesse de défilement)

Plus vous augmentez la durée du scroll et plus l’action sera lente et arrivera au même endroit dans l'écran. En effet une action rapide nécessite plus de traitement du téléphone et donc dépend plus de son occupation au moment du scroll (CPU sollicité par exemple), ce qui peut engendrer des petites différences entre chaque itération de test.

 

Cas d’ usage 2 : Je souhaite atteindre un texte dans l'écran

Problématique 1 : Je souhaite atteindre le texte en bas de l'écran

 

Problèmatique 2 : Je suis au milieu de l'écran et je souhaite atteindre le texte qui est avant ou après ma position

 

Cas d’ usage 3 : Je souhaite aller tout en bas de l'écran

Cette méthode réalisent jusqu'à 20 scrolls maximum pour atteindre la fin de la page.

Elles s’utilisent sans paramètre.

Si cette fonction ne fonctionnent pas, cela peut être lié aux éléments suivants :

  • Nombre maximum de scrolls atteint

  • Element scrollable qui ne va pas jusqu’en bas de la page

  • Nombreuses vidéos qui se lancent lors de la réalisation des scrolls

Dans ce cas il faut utiliser plusieurs fois des méthodes de swipe pour atteindre le bas de l'écran

 

Cas d’ usage 4 : Je veux faire défiler horizontalement vers la droite

Cas d’ usage 5 : Je veux faire défiler horizontalement vers la gauche

Cas d’usage 6 : Je veux faire défiler verticallement vers le haut