Estoy usando Titiritero para automatizar una interfaz de usuario. Necesito obtener un valor de atributo de un determinado elemento y estoy usando xpath para ubicar el elemento.
xpath:
//div[text()="5546800"]//following::div[@col-id="21"] .Recibo el error "Error al ejecutar 'queryselector' en 'Documento:
//div[text()="5546800"]//following::div[@col-id="21"] is not a valid selectorA continuación se muestra el código que utilicé:
const attributes=await page.$eval('//div[text()="5546800"]//following::div[@col-id="21"]',el =>el.getAttributes('type'))No puede usar expresiones XPath en page.$eval , pero puede crear elementHandle con page.$x que se puede pasar a page.evaluate :
const attributes = await page.evaluate(el => el.getAttribute('type'), (await page.$x('//div[text()="5546800"]//following::div[@col-id="21"]'))[0]) FYI: no estoy seguro si quería usar getAttributes() y no getAttribute() o getAttributeNames() .
Lo siento, cometí dos errores tipográficos en la versión anterior de esta respuesta:
$x devuelve una matriz de identificadores de elementos (como $$ y no como $ ), por lo que debe usar un índice del elemento deseado. ¡También necesita agrupar la expresión await -ed con paréntesis! await page.$x('//div[text()="5546800"]//following::div[@col-id="21"]') => (await page.$x('//div[text()="5546800"]//following::div[@col-id="21"]'))[0]