Localizadores en Selenium WebDriver

En este artículo, continuaremos nuestro tutorial de Selenium y exploraremos los distintos tipos de localizadores disponibles en Selenium. Antes de estudiar los localizadores, repasemos primero la necesidad de los localizadores en el proceso de automatización.
Un proceso de automatización sencillo en Selenium puede concebirse como:
- Inicia el navegador.
- Abre la página web que quieras automatizar.
- Localización de elementos web, como cuadros de texto.
- Realiza operaciones en elementos web, como escribir en un cuadro de texto.
- Hacer afirmaciones como el mensaje «Éxito».
Veamos un ejemplo de código que implementa el proceso anterior. Estudiaremos cada una de las líneas de código en el texto siguiente.
Índice
Código de ejemplo para localizadores en Selenium WebDriver
//Lanzamiento del navegador Firefox
WebDriver driver = nuevo FirefoxDriver();
//Abrir google.com
controlador.get(«http://www.google.com»);
//Inicializar el elemento web searchBox
WebElement searchBox = driver.findElement(By.name(«q»));
//Escribiendo un texto «ITtester» en la casilla de búsqueda
searchBox.sendKeys(«ITtester»);
Así que aquí podemos ver que si queremos realizar una operación en un elemento web – searchBox, primero tenemos que localizarlo. Aquí está el localizador By.name(«q»), que cuando se pasa al método findElement devuelve un elemento web searchBox.
Antes de seguir hablando de los distintos tipos de localizadores disponibles en Selenium, veamos primero cómo obtener los distintos atributos de elementos que se utilizan en los localizadores.
Utilizar la Herramienta de Desarrollo
Localizar elementos web requiere conocer sus atributos HTML. Podemos utilizar la herramienta de desarrollo integrada para obtener el código fuente HTML de elementos concretos (se inicia pulsando f12 en el navegador o Mayús+Ctrl+I).
Pasos para encontrar los atributos de un elemento HTML:
- Inicia la página web que se va a automatizar, por ejemplo https://www.google.com
- Pulsa F12 (o Mayús+Ctrl+I) para iniciar la herramienta de desarrollo.
- Haz clic en el icono inspeccionar-elemento, como se muestra en la imagen de abajo.

Después de hacer clic en el icono de inspeccionar-elemento, haz clic en el elemento web que quieras localizar, por ejemplo Cuadro de búsqueda de Google. Cuando haces clic en un elemento, su HTML se muestra en la interfaz de usuario de Firebug.

Aquí podemos ver los distintos atributos de los elementos web, como id, type, role, etc., junto con sus etiquetas, como input, div, etc. Ahora utilizaremos estas etiquetas, atributos y valores para buscar elementos utilizando varios localizadores.
Localizadores de selenio
Hay un total de 8 localizadores en Selenium WebDriver:
- Por Id – Localiza el elemento utilizando el atributo id del elemento web.
WebElement element = driver.findElement(By.id(«elementId»));
- Por className – recupera el elemento web utilizando el atributo className.
ElementoWeb = driver.findElement(By.className(«objectClass»));
- Por tagName – Busca un elemento web utilizando su etiqueta HTML, por ejemplo div, a, input, etc.
WebElement element = driver.findElement(By.tagName(«a»));
- Por nombre: busca un elemento web utilizando el atributo nombre.
WebElement element = driver.findElement(By.name(«macho»));
- PorTextoDeEnlace – Busca un elemento web de tipo enlace utilizando su texto.
WebElement element = driver.findElement(By.linkText(«Haz clic aquí»));
- PorTextoDeEnlaceParcial – Busca un elemento web del tipo enlace con una coincidencia de texto parcial.
WebElement element = driver.findElement(By.partialLinkText(«Clic»));
- Por cssSelector – Busca un elemento web utilizando CSS.
WebElement element = driver.findElement(By.cssSelector(«div#id»));
- Por XPath – Busca un elemento web utilizando su XPath.
WebElement element = driver.findElement(By.xpath(«//div[@id=’id’]»));
Ya has aprendido a localizar elementos en Selenio. Como puedes ver, localizar elementos por id, className, tagName, name, linkText y partialLinkText es fácil.
Sólo tenemos que seleccionar el localizador adecuado en función de la unicidad del elemento, por ejemplo preferimos utilizar ids porque los ids de los elementos suelen ser únicos. Sin embargo, puede haber situaciones en las que no dispongamos de los atributos id del elemento web y también puede que otros localizadores, como name y className, no recuperen el elemento web único solicitado. En estos casos, debemos utilizar selectores CSS y localizadores XPath.
Estos localizadores son muy potentes y ayudan a crear localizadores robustos para elementos web complejos.