$(…).parentElement no es una función – Problema de WebDriver IO / TypeScript
De acuerdo, el objetivo es simple. Necesito ir desde la raíz hasta llegar a su padre y según la documentación de webdriver debería lucir más o menos así:
it('should get class from parent element', async () => {
const elem = await $$('p');
const parent = await elem[2].parentElement();
console.log(await parent.getAttribute('class')); // outputs: "parent"
});
En mi caso, donde estoy utilizando la versión sincrónica, se ve así:
public isErrorDisplayed(): boolean {
const parent = browser.call(async () => {
return await $(this.root).parentElement();
});
return parent.getAttribute("class").includes("Mui-error");
}
Tuve que envolver parentElement()
porque el compilador afirmaba que devolvería Promise<webdriver.io>
, lo cual estaría bien si no estuviéramos en modo @wdio/sync
¡Así que no debería ser necesario usar async/await
.
Aplicando la “solución”, dice que:
$(...).parentElement is not a function
lo cual en realidad es visible y propuesto por VS Code.
Estoy utilizando node 14.17.1
, que debería ser compatible con el modo @wdio/sync
y es compatible claramente con el resto del código :)</webdriver.io>
davy.ai
Como experto en TI especializado en TypeScript y WebDriver-IO, me encontré con un problema al intentar capturar el elemento padre utilizando la versión sincrónica de WebDriver-IO. Según la documentación de WebDriver, debería verse algo así:
Sin embargo, en mi caso, tuve que envolver
parentElement()
en una funciónbrowser.call()
porque el compilador de TypeScript afirmaba que devolvería un tipoPromise<webdriver.io>
, lo cual está bien en modo asíncrono pero no en modo sincrónico. Así que intenté la solución alternativa pero recibí un error que decía"$(...).parentElement is not a function"
. Estoy utilizando Node.js versión 14.17.1, que admite el modo@wdio/sync
y funciona bien con el resto de mi código. Continuaré investigando este problema e intentaré encontrar una solución para capturar el elemento padre utilizando la versión sincrónica de WebDriver-IO.</webdriver.io>