Saltar al contenido
SDETRole
SDETRole

Glosario · Automatización de UI

Locator (localizador)

En inglés: Locator

También llamado: locators, localizador, localizadores, localizador de elementos

Definición

La consulta que usa un test de UI para encontrar un elemento en la página, como un rol y nombre, un test id, un selector CSS o una expresión XPath.

Un locator (localizador) es la forma en que un test le indica al driver del navegador sobre qué elemento actuar. Puede ser un selector CSS, una expresión XPath, el id de un elemento o una consulta de más alto nivel, como “el botón cuyo nombre accesible es Sign in”. Elegir bien los locators es el factor más determinante para que una suite de UI sobreviva a un rediseño.

Ejemplo

El mismo botón localizado de tres maneras:

// 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']"));

Qué hace bueno a un locator

  • Describe lo que ve el usuario. El rol, la etiqueta y el texto visible solo cambian cuando cambia el comportamiento visible para el usuario, que es justo cuando el test debería actualizarse de todos modos.
  • Es único. Los locators de Playwright son estrictos: una acción sobre un locator que coincide con dos elementos lanza un error en lugar de elegir el primero en silencio.
  • No depende del layout. Las rutas largas como div > div:nth-child(3) > span se rompen en cuanto se añade un contenedor.
  • Es estable entre builds. Los nombres de clase generados por herramientas CSS-in-JS y los ids autoincrementales cambian entre despliegues.

Un orden de prioridad habitual es: rol y nombre accesible; luego etiqueta o placeholder; después un data-testid acordado con los desarrolladores; luego CSS y, como último recurso, XPath.

Perezoso frente a inmediato

Un Locator de Playwright es perezoso (lazy). Guarda la consulta y la vuelve a resolver cada vez que actúas o haces una aserción, por eso no puede quedar obsoleto. El findElement de Selenium es inmediato (eager): devuelve una referencia WebElement al nodo que existía en ese momento. Si el DOM se vuelve a renderizar, esa referencia puede quedar obsoleta (stale), así que el código de Selenium suele guardar objetos By y buscar el elemento justo cuando lo necesita.

Escribe para buscar en todo SDETRole.

Búsqueda de texto completo con Pagefind · se ejecuta en tu navegador Abrir la página de búsqueda →