Aller au contenu
SDETRole
SDETRole

Glossaire · Automatisation de l’UI

Locator

Également appelé : locators, localisateur, localisateur d'élément, element locator

Définition

La requête qu'un test d'interface utilise pour trouver un élément de la page, comme un rôle et un nom, un test id, un sélecteur CSS ou une expression XPath.

Un locator (localisateur) est la manière dont un test indique au driver du navigateur sur quel élément agir. Il peut s’agir d’un sélecteur CSS, d’une expression XPath, d’un id d’élément ou d’une requête de plus haut niveau comme « le bouton dont le nom accessible est Sign in ». Bien choisir ses locators est le facteur le plus déterminant pour qu’une suite d’interface survive à une refonte.

Exemple

Le même bouton localisé de trois façons :

// Playwright: user-facing, preferred
page.getByRole('button', { name: 'Sign in' });

// Playwright: dedicated test attribute
page.getByTestId('login-submit');

// Playwright: CSS, tied to markup structure
page.locator('form.login > button.btn-primary');
// Selenium 4
driver.findElement(By.id("login-submit"));
driver.findElement(By.cssSelector("[data-testid='login-submit']"));

Ce qui fait un bon locator

  • Il décrit ce que voit l’utilisateur. Le rôle, le libellé et le texte visible ne changent que lorsque le comportement visible par l’utilisateur change, c’est-à-dire précisément quand le test doit de toute façon être mis à jour.
  • Il est unique. Les locators Playwright sont stricts : une action sur un locator qui correspond à deux éléments lève une erreur au lieu de choisir silencieusement le premier.
  • Il ne dépend pas de la mise en page. Les chemins longs comme div > div:nth-child(3) > span cassent dès qu’un conteneur est ajouté.
  • Il est stable d’un build à l’autre. Les noms de classes générés par les outils CSS-in-JS et les id auto-incrémentés changent entre deux déploiements.

Un ordre de priorité courant : rôle et nom accessible, puis label ou placeholder, puis un data-testid convenu avec les développeurs, puis CSS, et enfin XPath en dernier recours.

Paresseux ou immédiat

Un Locator Playwright est paresseux (lazy). Il mémorise la requête et la résout à nouveau à chaque action ou assertion, ce qui explique qu’il ne puisse pas devenir obsolète (stale). Le findElement de Selenium est immédiat (eager) : il renvoie une référence WebElement vers le nœud qui existait à cet instant. Si le DOM est re-rendu, cette référence peut devenir obsolète ; c’est pourquoi le code Selenium stocke généralement des objets By et recherche l’élément au moment où il en a besoin.

Saisissez un terme pour rechercher sur SDETRole.

Recherche plein texte par Pagefind · s’exécute dans votre navigateur Ouvrir la page de recherche →