xml - ¿Cuál es la diferencia entre.// y//*en XPath?
selenium selenium-webdriver (4)
- Para la primera pregunta : se trata del contexto. Puede ver la sintaxis para saber qué significa ''.'', ''..'', etc. Además, apuesto a que no encontrarás ninguna explicación mejor que This Link .
- Respuesta simplificada para la segunda pregunta : generalmente encontrará nodos utilizando las etiquetas html como td, a, li, div, etc. Pero ''*'' significa, busque cualquier etiqueta que coincida con su propiedad dada. Se usa principalmente cuando está seguro de una propiedad determinada, pero no de la etiqueta con la que puede venir el elemento, como supongamos que quiero una lista de todos los elementos con ID ''xyz'' en cualquier etiqueta.
Espero eso ayude :)
Al encontrar el XPath relativo a través de Firebug: crea como
-
.//*[@id=''Passwd'']
--------- ¿Qué.//*[@id=''Passwd'']
si no usamos punto al principio lo que significa? -
Simplemente agregue
//*
en Xpath - resalta --- varios elementos de la página ---------- ¿qué significa?
A continuación se encuentran los campos de contraseña de XPaths para Gmail.
¿Cuál es el significado de
*
?
-
.//*[@id=''Passwd'']
-
//child::input[@type=''password'']
El punto en XPath se llama
"expresión de elemento de contexto"
.
Si coloca un punto al comienzo de la expresión, lo haría específico al contexto.
En otras palabras, buscaría el elemento con
id="Passwd"
en el contexto del nodo en el que está llamando al método "find element by XPath".
El
*
en
.//*[@id=''Passwd'']
ayuda a hacer coincidir
cualquier elemento
con
id=''Passwd''
.
Todas estas expresiones seleccionan diferentes conjuntos de nodos:
.//*[@id=''Passwd '']
Los ''.''
al principio significa que el procesamiento actual
comienza en el nodo actual
.
El ''*'' selecciona todos los nodos de elementos que descienden de este nodo actual con el valor de
@id
@id igual a ''Passwd''.
¿Qué pasa si no usamos punto al principio lo que significa?
Luego seleccionaría todos los nodos de elementos con un
@id
-attribute-value igual a ''Passwd'' en
todo el
documento.
Simplemente agregue // * en XPath - resalta --- varios elementos de página
Esto seleccionaría todos los nodos de elementos en todo el documento.
A continuación se menciona: los campos de XPatht para contraseña de Gmail son verdaderos, ¿cuál es el significado de *?
.//*[@id=''Passwd'']
Esto seleccionaría todos los nodos de elementos que descienden del nodo actual cuyo valor
@id
-attribute-value es igual a ''Passwd''.
// child :: input [@ type = ''contraseña'']
Esto seleccionaría todos los nodos de elementos secundarios denominados
input
que
@type
-attribute-values son iguales a ''contraseña''.
El prefijo
child::
axis puede omitirse porque es el comportamiento predeterminado.
La sintaxis de elegir la expresión apropiada se explica aquí en w3school.com .
Y los Ejes (punto actual en el procesamiento) se explican aquí en otra página de w3school.com .
Hay varios conceptos XPath clave distintos en juego aquí ...
Absathos vs relativos XPaths (
/
vs.)
-
/
introduce una ruta de ubicación absoluta, comenzando en la raíz del documento. -
.
introduce una ruta de ubicación relativa, comenzando en el nodo de contexto.
Elemento nombrado vs cualquier elemento (
ename
vs
*
)
-
/ename
selecciona un elemento raízename
-
./ename
selecciona todos los elementos secundarios./ename
del nodo actual.
-
-
/*
selecciona el elemento raíz, independientemente de su nombre.-
./*
o*
selecciona todos los elementos secundarios del nodo de contexto, independientemente del nombre.
-
eje descendente o propio (
//*
)
-
//ename
selecciona todos los elementosename
en un documento.-
.//ename
selecciona todos los elementos.//ename
en o debajo del nodo de contexto.
-
-
//*
selecciona todos los elementos de un documento, independientemente de su nombre.-
.//*
selecciona todos los elementos, independientemente de su nombre, en o debajo del nodo de contexto.
-
Con estos conceptos en mente, aquí hay respuestas a sus preguntas específicas ...
-
.//*[@id=''Passwd'']
significa seleccionar todos los elementos en o debajo del nodo de contexto actual que tienen un valor de atributo deid
igual a''Passwd''
. -
//child::input[@type=''password'']
se puede simplificar a//input[@type=''password'']
y significa seleccionar todosinput
elementos deinput
en el documento que tienen un valor de atributo detype
igual a''password''
.