{"id":2000,"date":"2023-12-01T12:41:22","date_gmt":"2023-12-01T11:41:22","guid":{"rendered":"https:\/\/ittester.sk\/sin-categorizar\/tutorial-xpath-en-selenium-y-otras-herramientas-automatizadas\/"},"modified":"2024-06-25T16:01:52","modified_gmt":"2024-06-25T14:01:52","slug":"tutorial-xpath-en-selenium-y-otras-herramientas-automatizadas","status":"publish","type":"post","link":"https:\/\/ittester.sk\/es\/sin-categorizar\/tutorial-de-selenio\/tutorial-xpath-en-selenium-y-otras-herramientas-automatizadas\/","title":{"rendered":"Tutorial XPath en Selenium y otras herramientas automatizadas"},"content":{"rendered":"\n<p>En este tutorial de xPath, cubriremos el uso del localizador XPath en Selenium WebDriver y otras herramientas automatizadas. En nuestro post sobre c\u00f3mo encontrar WebElements en Selenium, estudiamos los distintos tipos de localizadores utilizados en Selenium WebDriver.<\/p>\n\n<p>Aqu\u00ed estudiaremos c\u00f3mo crear localizadores Xpath, los distintos tipos de Xpath y c\u00f3mo buscar elementos din\u00e1micos utilizando XPath.<\/p>\n\n<h2 class=\"wp-block-heading\"><strong>\u00cdndice<\/strong><\/h2>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-co-je-to-xpath\">\u010co je to XPath?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-ake-su-rozne-typy-xpath\">Ak\u00e9 s\u00fa r\u00f4zne typy XPath?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vyhladavanie-dynamickych-prvkov-pomocou-xpaths\">Vyh\u013ead\u00e1vanie dynamick\u00fdch prvkov pomocou XPaths<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-co-je-to-xpath\">\u00bfQu\u00e9 es XPath?<\/h2>\n\n<p>XPath puede definirse como un lenguaje de consulta utilizado para navegar por documentos XML con el fin de encontrar diversos elementos. La sintaxis b\u00e1sica de la expresi\u00f3n XPath es-.<\/p>\n\n<p><strong>\/\/tag[@attributeName=&#8217;attributeValues&#8217;]<\/strong><\/p>\n\n<p>Utilicemos ahora un ejemplo para comprender los distintos elementos de la sintaxis de la expresi\u00f3n Xpath: etiquetas, atributos y valores de atributos. Considera la siguiente imagen de una p\u00e1gina web de Google con Firebug controlando el div de la Barra de B\u00fasqueda.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"497\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500-1024x497.webp\" alt=\"Captura de pantalla de la sintaxis de la expresi&#xF3;n XPath\" class=\"wp-image-703\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500-1024x497.webp 1024w, https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500-300x146.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500-768x373.webp 768w, https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500.webp 1030w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">La sintaxis de las expresiones XPath es muy \u00fatil para crear otras expresiones XPath.  <\/figcaption><\/figure>\n<\/div>\n<ul class=\"wp-block-list\">\n<li><strong>&#8216;\/&#8217; o &#8216;\/\/&#8217;<\/strong> &#8211; La barra oblicua simple y la barra oblicua doble se utilizan para crear rutas XPath absolutas y relativas (se explican m\u00e1s adelante en este tutorial). Se utiliza una sola barra para iniciar la selecci\u00f3n desde el nodo ra\u00edz. Mientras que la doble barra se utiliza para recuperar el nodo actual correspondiente a la selecci\u00f3n. Por ahora, utilizaremos aqu\u00ed \u00ab\/\/\u00bb.<\/li>\n\n\n\n<li>&lt;&gt;E<strong>tiqueta <\/strong>&#8211; Las etiquetas HTML empiezan por &#8216; &#8216; y terminan por &#8216; &#8216;. Se utilizan para encerrar diferentes elementos y proporcionan informaci\u00f3n sobre el tratamiento de los elementos. En la imagen anterior, se muestran las etiquetas &#8216;div&#8217; y &#8216;input&#8217;.<\/li>\n\n\n\n<li><strong>Atributo<\/strong> &#8211; Los atributos definen las propiedades que tienen los elementos HTML. En la figura anterior, los atributos div del elemento exterior son id, classes y dir.<\/li>\n\n\n\n<li><strong>AttributeValue<\/strong> &#8211; Los valores de atributo, como su nombre indica, son valores de atributo, por ejemplo \u00absb_ifc0\u00bb es el valor del atributo \u00abid\u00bb.<\/li>\n<\/ul>\n\n<p>Utilizando la sintaxis XPath mostrada anteriormente, podemos crear varias expresiones XPath para la barra de b\u00fasqueda-div de Google mostrada en la imagen, como \/\/div[@id=&#8217;sb_ifc0\u2032], \/\/div[@class=&#8217;sbib_b&#8217;], o \/\/div[@dir=&#8217;ltr&#8217;]. Cualquiera de estas expresiones puede utilizarse para recuperar el elemento deseado, siempre que los atributos seleccionados sean \u00fanicos.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-ake-su-rozne-typy-xpath\">\u00bfCu\u00e1les son los distintos tipos de XPath?<\/h2>\n\n<p>Existen dos tipos de expresiones XPath:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>XPath<\/strong> absoluto &#8211; Las expresiones XPath creadas utilizando expresiones XPath absolutas inician la selecci\u00f3n desde el nodo ra\u00edz. Estas expresiones empiezan con un car\u00e1cter \u00ab\/\u00bb o un nodo ra\u00edz y recorren todo el DOM para llegar al elemento.<\/li>\n\n\n\n<li><strong>XPath<\/strong> relativo &#8211; Las expresiones XPath relativas son mucho m\u00e1s compactas y utilizan dobles barras inclinadas iniciales &#8216;\/\/&#8217;. Estas expresiones XPath pueden seleccionar elementos en cualquier lugar que coincida con los criterios de selecci\u00f3n y no empiece necesariamente por el nodo ra\u00edz.<\/li>\n<\/ul>\n\n<p>Entonces, \u00bfcu\u00e1l de estas dos expresiones es mejor?\u00bb &#8211; Las expresiones XPath relativas se consideran mejores porque son m\u00e1s f\u00e1ciles de leer y crear, y tambi\u00e9n son m\u00e1s robustas. El problema de las rutas XPath absolutas es que incluso un peque\u00f1o cambio en el DOM de la ruta del nodo ra\u00edz al elemento deseado puede invalidar la ruta XPath.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vyhladavanie-dynamickych-prvkov-pomocou-xpaths\">Buscar elementos din\u00e1micos mediante XPaths<\/h2>\n\n<p>En automatizaci\u00f3n, muchas veces o bien no tenemos atributos \u00fanicos de los elementos que los identifiquen un\u00edvocamente, o bien los elementos se generan din\u00e1micamente, sin que se conozca de antemano el valor del atributo.<\/p>\n\n<p>Para estos casos, XPath proporciona varios m\u00e9todos de b\u00fasqueda de elementos, por ejemplo: utilizando el texto escrito encima de los elementos; utilizando el \u00edndice del elemento; utilizando un valor de atributo que coincida parcialmente; desplaz\u00e1ndose a un hermano, hijo o padre del elemento que pueda identificarse un\u00edvocamente, etc.<\/p>\n\n<p><strong>Utilizar la funci\u00f3n text()<\/strong><\/p>\n\n<p>Utilizando la funci\u00f3n text() podemos encontrar un elemento bas\u00e1ndonos en el texto escrito sobre \u00e9l, por ejemplo XPath para el bot\u00f3n \u00abGoogleBuscar\u00bb:<\/p>\n\n<p><strong>[text()=&#8217;Google Search&#8217;]\/\/*<\/strong> (aqu\u00ed utilizamos \u00ab*\u00bb para que coincida cualquier etiqueta con el texto deseado)<strong> <\/strong><\/p>\n\n<p><strong>Utilizar la funci\u00f3n contains()<\/strong><\/p>\n\n<p>Utilizando la funci\u00f3n contains(), tambi\u00e9n podemos comparar los valores de atributos parcialmente id\u00e9nticos. Esto es especialmente \u00fatil cuando se buscan valores din\u00e1micos, parte de los cuales permanecen constantes, por ejemplo El XPath para el div exterior de la imagen anterior con id \u00absb_ifc0\u00bb tambi\u00e9n se puede encontrar con id parcial &#8211; \u00absb\u00bb utilizando contains() &#8211; <strong>\/\/div[contains(@id,&#8217;sb&#8217;)]<\/strong><\/p>\n\n<p><strong>Uso del \u00edndice de elementos<\/strong><\/p>\n\n<p>Especificando la posici\u00f3n del \u00edndice entre corchetes, podemos desplazarnos al en\u00e9simo elemento que cumpla la condici\u00f3n, por ejemplo <strong>\/\/div[@id=&#8217;elementid&#8217;]\/input[4<\/strong> ] recupera el cuarto elemento de entrada dentro del elemento div.<\/p>\n\n<p><strong>Utilizar ejes XPath<\/strong><\/p>\n\n<p>Los ejes XPath ayudan a localizar elementos web complejos haci\u00e9ndolos pasar por hermanos, descendientes o padres de otros elementos que pueden identificarse f\u00e1cilmente. Algunos de los ejes m\u00e1s utilizados son<\/p>\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong>ni\u00f1o<\/strong><\/td><td><strong>Selecci\u00f3n de nodos hijos del nodo de referencia.<\/strong><strong><br\/><\/strong><strong>Sintaxis &#8211; XpathForReferenceNode\/child::tag<\/strong><\/td><\/tr><tr><td><strong>padre<\/strong><\/td><td>Selecci\u00f3n del nodo padre del nodo de referencia.<br\/>Sintaxis &#8211; XpathForReferenceNode\/parent::tag<\/td><\/tr><tr><td><strong>siguiendo<\/strong><\/td><td>Selecciona todos los nodos que siguen al nodo de referencia.<br\/>Sintaxis &#8211; XpathForReferenceNode\/following::tag<\/td><\/tr><tr><td><strong>precedente<\/strong><\/td><td>Selecciona todos los nodos que est\u00e1n antes del nodo de referencia.<br\/>Sintaxis &#8211; XpathForReferenceNode\/preceding::tag<\/td><\/tr><tr><td><strong>antepasado<\/strong><\/td><td>Selecci\u00f3n de todos los elementos antecesores anteriores al nodo de referencia.<br\/>Sintaxis &#8211; XpathForReferenceNode\/ancestor::tag<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>XPath puede definirse como un lenguaje de consulta utilizado para navegar por documentos XML con el fin de encontrar diversos elementos.<\/p>\n","protected":false},"author":8,"featured_media":2003,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[39],"tags":[],"class_list":["post-2000","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-de-selenio"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/2000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/comments?post=2000"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/2000\/revisions"}],"predecessor-version":[{"id":2005,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/2000\/revisions\/2005"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media\/2003"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media?parent=2000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/categories?post=2000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/tags?post=2000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}