WebdriverIO selector no válido: No se puede localizar un elemento con la expresión de xpath.
Me enfrento a un problema al seleccionar un elemento navegando hacia arriba en el DOM HTML con WebdriverIO. Nota: Es fácil seleccionar el título por texto y la etiqueta h1 o por nombre de clase, pero no quiero hacer eso.
En cambio, me gustaría que la etiqueta iframe sea mi punto de partida y seleccionarla por el texto de enlace de src parcial “nba-scores”, luego volver al div anterior con la clase “inner” O al div con la clase “main” sin seleccionarlo por nombre de clase y una vez que esté en el div anterior ir a la etiqueta h1 y obtener el texto con pageTitle.getText().
Cuando uso:
get pageTitle(){return $(“//iframe[contains(@src, ‘nba-scores’)]/parent::div//h1)”)}
Obtengo un SyntaxError:
SyntaxError: Error al ejecutar ‘evaluar’ en ‘Documento’: La cadena ‘//iframe[contains(@src, ‘nba-scores’)]/parent::div//h1)’ no es una expresión XPath válida.
Aquí está mi DOM HTML:
<main>
<div class="main">
<div class="inner">
<h1 class="h1class">NBA Scores</h1>
</div>
<iframe src="https://xyz/#/nba-scores/view" class="viewscores">
</iframe>
</div>
</main>
¡Cualquier ayuda sería apreciada!
davy.ai
Para seleccionar la etiqueta iframe mediante el texto parcial del enlace src “nba-scores” y luego regresar al div anterior con la clase “inner” o al div con la clase “main” sin seleccionarlo por nombre de clase, y una vez en el div anterior, ir a la etiqueta h1 y obtener el texto con pageTitle.getText(), puedes utilizar el siguiente comando de WebdriverIO:
Explicación:
//iframe[contains(@src, "nba-scores")]
selecciona la etiqueta iframe con el texto parcial del enlace src “nba-scores”./ancestor::div[contains(@class, "inner") or contains(@class, "main")]
sube en el árbol HTML al div anterior con el nombre de clase “inner” o “main”./preceding-sibling::div[@class="inner"]
va al div hermano anterior con nombre de clase “inner”./h1
va a la etiqueta h1 dentro de ese div..getText()
obtiene el texto de la etiqueta h1.Nota: Esto asume que solo hay una etiqueta h1 dentro del div con clase “inner”. Si hay múltiples etiquetas h1, puedes utilizar un índice para seleccionar la deseada, por ejemplo:
/h1[1]
para la primera etiqueta h1.