Soy un novato y trato de diseñar selectores de CSS relativos y JSPath para ejecutar mis scripts de automatización.
Mientras estaba en el camino, pude encontrar que las declaraciones de devolución son diferentes entre estos dos. Por favor, consulte el siguiente ejemplo. ¿Alguien podría decir qué cambios debo hacer en JSPath para mantener los mismos resultados que los selectores de CSS relativos?
Resultado del selector CSS relativo.
Resultado de JSPath relativo.
JS solo devuelve el primer elemento mientras que los selectores css devolvieron múltiples arriba. ¿Qué cambios debo hacer en JS para mantener los mismos resultados?
El método Document querySelector() devuelve el primer WebElement dentro del documento que coincide con el selector o grupo de selectores especificado. Si no se encuentran coincidencias, se devuelve null .
Nota : la coincidencia se realiza mediante un recorrido de orden previo en profundidad de los nodos del documento, comenzando con el primer elemento en el marcado del documento y recorriendo los nodos secuenciales por orden del número de nodos secundarios.
Sintaxis:
element = document.querySelector(selectors); El método Document querySelectorAll() devuelve una NodeList estática que representa una lista de los elementos del documento que coinciden con el grupo de selectores especificado.
Nota : Aunque
NodeListno es unArray, es posible iterarlo conforEach(). También se puede convertir en unArrayreal usandoArray.from(). Sin embargo, algunos navegadores antiguos no han implementadoNodeList.forEach()niArray.from(). Esto se puede eludir usandoArray.prototype.forEach().
Sintaxis:
elementList = parentNode.querySelectorAll(selectors);Mientras que usar xpath o css-selectors devolvería una lista de los elementos del documento que coinciden con el grupo especificado de selectores.
Como se discutió anteriormente, cuando usa querySelector() solo se devuelve el primer elemento coincidente. Si su caso de uso es devolver todo el elemento coincidente, debe usar querySelectorAll() como:
document.querySelector("div[slot^='Learner']>div>div>span")tienes que usar
document.querySelectorAll();