---
title: Recorder d'application mobile
description: Enregistrez un test smartphone en pilotant un device réel aux côtés d'une liste de steps en direct.
lastUpdated: "2026-09-23"
---

> **For AI agents:** the complete documentation index is at [llms.txt](/llms.txt). Append `.md` to any page URL for its markdown version.

L'enregistrement transforme une session manuelle sur un device réel en test. Vous pilotez le smartphone depuis votre navigateur, et chaque tap, input et scroll devient un step modifiable, sans script requis. Le recorder fonctionne côte à côte avec le builder : le device est diffusé à droite tandis que vos steps se construisent à gauche.

![Le recorder smartphone en cours de session : le bandeau d'enregistrement avec son chrono, Pause et Stop record, le canvas de steps à gauche, et le device surmonté d'Assertion mode et Find an element](/images/mobile-recorder-new.webp)

## Enregistrer un test

Partez du tableau de bord **Tests** pour que l'enregistrement aboutisse dans un nouveau test.

<Steps>
  <Step title="Créer le test">
    Cliquez sur **+ Create new test**, choisissez **Smartphone (New experience)**, donnez un nom au test, sélectionnez le device sur lequel enregistrer et choisissez l'application à tester. Cliquez sur **Use recorder**.
  </Step>
  <Step title="Piloter le device">
    Le recorder s'ouvre avec le flux du device à droite et le canvas de steps à gauche, en commençant par un bloc **Launch app**. Effectuez vos tap et swipe directement sur le flux : chaque interaction ajoute un step numéroté (par exemple **Tap**) sous un groupe de steps.
  </Step>
  <Step title="Générer le test">
    Cliquez sur **Stop record** lorsque vous avez terminé. Les steps restent dans le canvas, prêts à être exécutés avec **Save and run** ou à être affinés au préalable.
  </Step>
</Steps>

## Pendant l'enregistrement

Un bandeau traverse le haut du recorder et porte l'état de la session : le chrono, **Pause** et **Stop record**. La pause gèle l'enregistrement sans fermer la session : vous pouvez naviguer librement dans l'application (fermer une popup, revenir au bon écran) sans que ce détour devienne des steps. Le device reste pilotable pendant la pause, il n'enregistre simplement plus. **Resume** reprend l'enregistrement.

Deux outils sont posés au-dessus du device, parce qu'ils agissent sur l'écran lui-même :

- **Assertion mode** transforme votre prochain tap en vérification plutôt qu'en action : vous désignez ce qui doit être à l'écran et le recorder écrit un step **Verify element**. C'est le raccourci de la vérification que vous construiriez sinon via **Find an element**, sans ouvrir la modale.
- **Find an element** ouvre une modale où vous désignez un élément sur une capture de l'écran et le transformez en step. C'est la porte d'entrée pour un élément qu'on n'atteint pas au doigt, pour une vérification, ou quand vous voulez voir le selector avant le geste. Voir [Find an element](#find-an-element) plus bas.

**Fill input** ne demande aucune commande : tapez un champ sur le device et le recorder crée le step, avec un bandeau qui rappelle que vous pouvez saisir la valeur directement au clavier.

## Find an element

La modale s'ouvre sur l'écran tel qu'il a été capturé, avec l'heure de la capture dans l'en-tête et un bouton **Refresh** pour en prendre une nouvelle. Elle a trois colonnes : l'écran à gauche, l'arbre des éléments au milieu, et l'élément sélectionné à droite.

### Désigner ce que vous visez

Survolez la capture : le plus petit élément sous le pointeur s'allume. Cliquez pour le sélectionner. L'arbre suit, les parents se déplient et la ligne défile, vous voyez donc toujours où l'élément se situe dans la hiérarchie. Le bouton en forme d'oeil contoure d'un coup tout ce qui est sélectionnable à l'écran, pratique quand vous ne savez pas ce que l'application expose.

Le champ **Search by label, text or id** filtre l'arbre : un élément que vous savez nommer est plus rapide à atteindre qu'un élément qu'il faut aller chercher au scroll.

### Lire les selectors

La colonne de droite liste, sous **Find the element by**, les façons d'atteindre l'élément, de la plus robuste à la plus fragile. Chacune indique combien d'éléments elle matche, compté sur cet écran précis :

| Badge | Ce que ça veut dire |
| --- | --- |
| **1 match** | Le selector atteint votre élément et lui seul. Rien à arbitrer. |
| **22 matches** | Plusieurs éléments le partagent. Voir la section suivante. |
| **1 match, by position** | Il atteint un seul élément, mais grâce à sa place dans l'arbre. Il casse si l'écran est réordonné. |

Le plus robuste porte le badge **RECOMMENDED** et c'est celui qui est déjà rempli en pied de modale. Le panneau **Attributes** en dessous liste tout ce que la capture sait de l'élément, si vous voulez construire le vôtre.

![La modale Find an element sur une calculatrice : la touche 9 est sélectionnée, resource-id est recommandé avec 1 match tandis que class name en atteint 24](/images/find-an-element-selectors.webp)

### Un selector partagé est une question de portée

Un élément dont les frères portent les mêmes attributs, c'est normal : une liste de cartes, une rangée d'onglets. Plutôt que de refuser le selector, la modale vous demande lequel vous visiez, avec **Use the 14th of the 22 elements that share it, the one you picked**. Les matchs sont numérotés sur la capture pour que vous vérifiiez que c'est le bon, et changer de rang déplace la sélection : vous n'inspectez jamais une carte pendant que le step en tape une autre.

Le selector en pied de modale affiche alors `found by class name - 14th of 22`.

![Un ImageView partagé par 22 éléments : les matchs sont numérotés sur la capture et une liste déroulante choisit le 14e](/images/find-an-element-shared-selector.webp)

### Taper par coordonnées

Certains écrans n'offrent rien à sélectionner, typiquement une page web affichée dans l'application : l'arbre s'arrête au cadre et aucun des champs à l'intérieur n'est atteignable par un selector.

Basculez la capture sur **Coords**. Un viseur suit le pointeur et affiche les x et y, un clic pose le point, et **X position** et **Y position** restent modifiables. Le panneau écrit noir sur blanc ce que coûte un point : `65% from the left, 14% from the top of this 1080 x 2340 screen. On a screen of another size the tap lands somewhere else.` Si un élément se trouve tout de même sous le point, la modale propose son selector, parce qu'un selector survit à un changement de mise en page, un point non.

![Le mode Coords : un viseur sur la capture affiche 700, 339, à côté des champs X et Y et de la note sur la résolution de l'écran](/images/find-an-element-coords.webp)

### Ajouter le step

Choisissez l'action en pied de modale : **Tap**, **Long press**, **Fill input**, **Verify element** ou **Extract value**. Ajoutez une valeur si l'action en attend une, puis **Add step**. En mode **Coords**, seules **Tap** et **Long press** restent proposées, puisqu'il n'y a pas d'élément à vérifier ni dont lire une valeur.

![Le sélecteur d'action en pied de modale, ouvert sur Tap, Long press, Fill input, Verify element et Extract value, à côté du bouton Add step](/images/find-an-element-actions.webp)

La modale remplit le locator du step depuis lequel elle a été ouverte, dans le bon mode : vous ne recopiez jamais un selector à la main.

## Ajuster les sélecteurs et ajouter des assertions

Chaque step enregistré affiche le sélecteur qu'il cible (par exemple `id=...` ou `content-desc=...`) directement dans la ligne du step. Lorsque le choix automatique est fragile, ouvrez le menu déroulant du sélecteur et choisissez une correspondance plus claire.

Le menu trois points d'un step propose des options supplémentaires, dont **Add assertion** : un step **Verify element** qui vérifie que l'écran est correct, par exemple qu'une valeur est `displayed`. Les assertions deviennent des steps dans le canvas aux côtés de vos taps, ce qui permet à un enregistrement de vérifier le comportement au fur et à mesure.

<Tip>
Pour les éléments fragiles, activez les sélecteurs IA par step dans le builder afin que le test s'auto-corrige lorsque l'interface de l'application change. Consultez [Sélecteurs IA](/fr/tests/builder#sélecteurs-ia).
</Tip>

## Legacy : recorder en contrôle à distance

Le recorder d'origine se trouve dans l'onglet **Remote control** de la [live session](/fr/tests/live-session) et génère un test JavaScript. Il fonctionne toujours, mais il est progressivement remplacé par le recorder côte à côte décrit ci-dessus. Préférez le nouveau flux pour les nouveaux tests.

<Steps>
  <Step title="Démarrer l'enregistrement">
    Dans **Remote control**, sélectionnez le smartphone, puis cliquez sur **start a test record** dans la barre d'outils Quick Assistant (aux côtés des contrôles Power, Volume, Home, Back et App switcher).
  </Step>
  <Step title="Sélectionner l'application">
    Choisissez l'application depuis la modale **Choose your test package**, qui liste les applications **User** et **System**.
  </Step>
  <Step title="Enregistrer et générer">
    Pilotez le device manuellement, puis arrêtez l'enregistrement. Celui-ci produit une configuration de steps basée sur un formulaire avec des champs comme **Application package** et **Application activity**, ainsi que des options comme **Reset the app**, **Run in background** et **Ignore errors**.
  </Step>
</Steps>

Le résultat est une [smartphone script action](/fr/tests/actions/legacy/script-actions-smartphone) : du JavaScript que vous pouvez modifier, enrichir d'assertions, ou compléter avec des [variables et métriques personnalisées](/fr/tests/actions/legacy/script-actions-variables).

## Et ensuite ?

<Columns cols={2}>
  <Card title="Test builder" icon="vial" href="/fr/tests/builder">

    Modifiez, groupez et vérifiez les steps que vous avez enregistrés

</Card>
  <Card title="Live session" icon="display" href="/fr/tests/live-session">

    Pilotez un device réel de manière interactive sans enregistrer

</Card>
</Columns>
