¿Hay alguna manera de obtener el XPath en Google Chrome?

346

Tengo una página web que quiero usar con YQL. Pero necesito la XPath de un artículo específico. Puedo verlo en el área de herramientas de depuración para Google Chrome, pero no veo una manera de copiar ese XPath.

¿Hay alguna manera de copiar un XPath completo?

GeoffreyF67
fuente
2
Si está dispuesto a instalar Firefox además de Chrome, puede usar la extensión xpather .
Adrian Grigore
44
Si está dispuesto a instalar Firefox, ya está integrado en Firebug.
Verhogen
2
@verhogen: No estaba al tanto de esto, a pesar de que estoy usando Firebug casi a diario. En caso de que alguien más esté interesado en obtener más información, aquí está: blog.browsermob.com/2009/04/…
Adrian Grigore
También estoy votando esto ... el Xpath Helper en Google Chrome no funciona bien, tanto al presionar la tecla de acceso directo [Ctrl + Shift + X] o al hacer clic en el botón negro "X Path" (con el botón de llave) en el Consola JS cuando hay errores JS en la página. Y no pude encontrar ningún otro buen complemento para Chrome por ahí. No descargue el complemento "XPath Checker" para Mozilla. También he encontrado problemas con ese complemento. Asegúrese de obtener el "XPather" y descárguelo mientras tenga abierto Firefox (no otro navegador). Para utilizar el elemento de clic derecho "XPather" y seleccione "Mostrar en XPather"
MacGyver
Ahora Chrome también tiene una extensión "XPather". Siento que es muy bueno. Alt-'x 'para activar la ventana. Puede ingresar el xpath y ver los resultados coincidentes. La visualización del resultado coincidente es bastante clara.
gm2008

Respuestas:

555

Puede usar $xen la consola de JavaScript de Chrome. No se necesitan extensiones.

ex: $x("//img")

Además, el cuadro de búsqueda en el inspector web aceptará xpath

Matt Polito
fuente
2
Agradable, aunque no estoy seguro de que esto responda a la pregunta original. ¿Cómo te enteraste? Me pregunto si hay otras funciones similares disponibles en la consola.
huyz
44
Supongo que Chrome copió la mayoría de los comandos de la línea de comandos de Firebug
huyz
99
Estaba preguntando "¿cómo obtener una cadena xpath para un elemento?", En lugar de "¿cómo selecciono por xpath?" no era el?
Max Williams
3
Interesante cómo Ctrl+Spaceno revela $x. Si solo escribe $x, puede ver cómo se logra, por lo tanto, el OP debe poder determinar cómo lograr lo que quieren. Por ejemplo; document.evaluate('//h1', document, null, XPathResult.STRING_TYPE, null).stringValue
Alasdair
55
@huyz: hay funciones similares disponibles. Consulte developers.google.com/chrome-developer-tools/docs/console . $ 0 es particularmente útil: el último elemento que seleccionó en la herramienta DOM. $ ($ 0) lo convierte en un objeto jQuery (si jQuery está disponible). Además, el artículo no menciona la copia ($ 0), que copia al portapapeles. (Por cierto, me acabo de descubrir $ x, y encontrado este hilo, porque yo estaba tratando de usar esa variable para otra cosa en la consola.)
Nathan Long
244

Haga clic derecho en el nodo => "Copiar XPath"

zavidovych
fuente
19
Esta es la forma más frágil de obtener un xpath, es muy probable que se rompa a medida que cambia el contenido
Juan Mendes
8
@JuanMendes ¿Cuál es la alternativa?
Nate
99
@Nate No existe una alternativa fácil si desea que su XPath siga funcionando a medida que cambia el documento. Solo tiene que pensarlo y tratar de no agregar información superflua a su XPath. Una regla general es que cuanto más largo sea su XPath, menos probable es que funcione en otros contextos.
Juan Mendes
Esto no le proporciona una XPath real para el elemento único en la página. Eso sería bastante difícil.
CJ7
1
En la nueva versión de Google Chrome, debe hacer clic derecho en el nodo y seleccionar el elemento Copiar XPath que se movió a la opción Copiar.
Omid Nasri
92

Todas las respuestas anteriores son correctas aquí es otra forma con captura de pantalla también.

De Chrome:

  1. Haga clic derecho en "inspeccionar" en el elemento que está tratando de encontrar el xpath
  2. Haga clic derecho en el área resaltada en la consola.
  3. Ir a Copiar xpath

ingrese la descripción de la imagen aquí

grepit
fuente
24

La extensión XPath Helper hace lo que necesita: https://chrome.google.com/webstore/detail/hgimnogjllphhhkhlmebbmlgjoejdpjl

asadovsky
fuente
¿Alguien sabe los comandos de teclado para esto en ubuntu? crtl-shift-x y command-shift-x no parecen hacer nada
xiatica
1
@xiatica, ¿intentaste en una pestaña nueva / actualizada? Tenga en cuenta que la extensión no funcionará en pestañas que estaban abiertas antes de la instalación; tales pestañas deben actualizarse.
asadovsky
13

No se necesita extensión en Chrome ahora. Haga clic derecho en cualquier elemento para el que desee xpath y haga clic en "Inspeccionar elemento" y luego nuevamente dentro del Inspector, haga clic derecho en elemento y haga clic en "Copiar Xpath".

bucear profundo
fuente
11
Este método ya se menciona en una respuesta anterior, publicada el año pasado: stackoverflow.com/a/11087358/938089
Rob W
12

Google Chrome proporciona una herramienta de depuración incorporada llamada " Chrome DevTools " lista para usar , que incluye una característica práctica que puede evaluar o validar selectores XPath / CSS sin extensiones de terceros.

Esto se puede hacer mediante dos enfoques:

Use la función de búsqueda dentro del panel Elementos para evaluar los selectores XPath / CSS y resaltar los nodos coincidentes en el DOM. Ejecute los tokens $ x ("some_xpath") o $$ ("css-selectors") en el panel de la consola, que evaluará y validará.

Desde el panel Elementos

  1. Presione F12 para abrir Chrome DevTools.

  2. El panel de elementos debe abrirse por defecto.

  3. Presione Ctrl + F para habilitar la búsqueda DOM en el panel.

  4. Escriba los selectores XPath o CSS para evaluar.

  5. Si hay elementos coincidentes, se resaltarán en DOM. Sin embargo, si hay cadenas coincidentes dentro de DOM, también se considerarán como resultados válidos. Por ejemplo, el encabezado del selector CSS debe coincidir con todo (CSS en línea, scripts, etc.) que contenga el encabezado de la palabra, en lugar de coincidir solo con los elementos.

ingrese la descripción de la imagen aquí

Desde el panel de la consola

  1. Presione F12 para abrir Chrome DevTools.

  2. Cambie al panel de la consola.

  3. Escriba XPath como $x(".//header")para evaluar y validar.

  4. Escriba selectores CSS como $$("header")evaluar y validar.

  5. Verifique los resultados devueltos de la ejecución de la consola.

Si los elementos coinciden, se devolverán en una lista. De lo contrario, se muestra una lista vacía [].

$x(".//article")
[<article class="unit-article layout-post">…</article>]

$x(".//not-a-tag")
[ ]

Si el selector XPath o CSS no es válido, se mostrará una excepción en texto rojo. Por ejemplo:

$x(".//header/")
SyntaxError: Failed to execute 'evaluate' on 'Document': The string './/header/' is not a valid XPath expression.

$$("header[id=]")
SyntaxError: Failed to execute 'querySelectorAll' on 'Document': 'header[id=]' is not a valid selector.
Shubham Jain
fuente
10

Deja que te diga una fórmula simple para encontrar xpath de cualquier elemento:

1- Abrir sitio en el navegador

2- Seleccione el elemento y haga clic derecho sobre él

3- Haga clic en la opción inspeccionar elemento

4- Haz clic derecho en el html seleccionado

5- elige la opción para copiar xpath Úselo donde lo necesites

Este enlace de video será útil para usted. http://screencast.com/t/afXsaQXru

Nota: Para conocer las opciones avanzadas de xpath, debe conocer la expresión regular o el patrón de su html.

Abdul Majeed
fuente
3
Usé la consola Chrome para probar esto e hice esto para votar: $x('//*[@id="answer-33492958"]/table/tbody/tr[1]/td[1]/div/a[1]')[0].click();
Cagatay Ulubay
8

xpathOnClick tiene lo que estás buscando: https://chrome.google.com/extensions/detail/ikbfbhbdjpjnalaooidkdbgjknhghhbo

Sin embargo, lea los comentarios, en realidad se necesitan tres clics para obtener el xpath.

Burt
fuente
No parece funcionar en ubuntu 10.04 con Chrome 12.0.742.124, se instala pero cuando hace clic en el icono de xpath, luego hace clic en la página (la primera vez para cerrar la ventana emergente de xpath), luego hace clic en un elemento de página (para mostrar xpath en la consola js ) .... nada aparece en la consola. probado en el sitio del complemento
xiatica
8

A partir de la última actualización de Chrome, ahora puede hacer clic en cualquier elemento del inspector de elementos y copiar el XPath en el portapapeles.

Difícil
fuente
5

Para Chrome, por ejemplo:

  1. Haga clic derecho en "inspeccionar" en el elemento que está tratando de encontrar el XPath.
  2. Haga clic derecho en el área resaltada en el DOM HTML.
  3. Vaya a Copiar> seleccione 'Copiar XPath'.
  4. Después del paso anterior, obtendrá la XPath absoluta del elemento de DOM.
  5. Puede hacer cambios para que sea XPath relativo (porque si el DOM cambia, aún su XPath podría encontrar el elemento).

a. Para hacerlo, al abrir el panel 'Elementos' del navegador, presione CTRL + F, pegue el XPath.

si. Realice los cambios como se describe en el siguiente ejemplo.

Absoluta xpath = // * [@ id = "aplicación"] / div [1] / header / nav / div [2] / ul / li [2] / div / button

Xpath relacionado = // div // nav / div [2] / ul / li [2] / div / button

Cuando haces cambios:

  1. asegúrese de que XPath sea único dentro del DOM.
  2. aún así, el elemento web está seleccionado en el DOM y en la página web.
Hossain Mahmood Tuhin
fuente
3

Simplemente haga clic derecho en el elemento para el que desea el xpath y verá un elemento de menú para copiarlo. Esto puede no haber existido cuando el OP hizo su publicación, pero ciertamente ahora está allí.

RAAAAAAAANDY
fuente
2

En Firebug en Firefox, puede hacer clic derecho en un elemento después de inspeccionarlo y elegir Copiar XPath. No pude hacer que ChromYQLip funcione sin problemas.

Ivan
fuente
1

Puede intentar usar TruePath de Chrome Web Extension, que genera dinámicamente el XPath relativo al hacer clic derecho en la página web y mostrar todos los XPath como elementos de menú.

dasunse
fuente
0

Ligeramente OT, pero quizás útil: en Mac Chrome, aunque no puede copiar el xpath fuera del cuadro de búsqueda en el panel de herramientas de desarrollo (en su lugar, copiar toma el nodo como HTML), puede arrastrar y soltar el texto en un editor externo.

Ben Weiner
fuente
0

Probé casi todas las extensiones disponibles y encontré que la siguiente es una de las mejores.

Enlace de extensión de ChroPath

Al igual que FirePath, esta extensión le proporciona directamente el Xpath cuando hace clic en Inspeccionar.

ingrese la descripción de la imagen aquí

Harish Kannan
fuente
0

presione Cntl + Shift + C
seleccione el elemento que desea obtener XPathhaciendo clic en él
right clicken la parte resaltada en la consola
copy->copy XPath

ingrese la descripción de la imagen aquí

hossein hayati
fuente
-1

Utilice esta extensión, genera xpaths en función de la identificación o la clase, que es probablemente lo que desea usar.

Haga clic en el icono del navegador, el panel se muestra en la esquina derecha de la página, luego haga clic en comenzar a inspeccionar, luego haga clic en cualquier elemento para obtener su xpath.

XPath Generator

ospider
fuente
@robbyoconnor si ha realizado algunas pruebas de blackbox o rastreo, sabrá que el xpath generado por el navegador no es tan estable.
ospider