Estoy tratando de seleccionar algunos divs anidados usando el titiritero $$eval . Copié el XPath de los elementos DOm que necesito seleccionar pero parece que no funciona.
//XPath //*[@id="app"]/main/div/div/div[2]/div/div/div/div[1]/ul/li/a/span await page.waitForSelector('//*[@id="app"]/main/div/div/div[2]/div/div/div/div[1]/ul/li/a/span') const names = await page.$$eval('//*[@id="app"]/main/div/div/div[2]/div/div/div/div[1]/ul/li/a/span', (el) => { return el.map( n => n.innerHTML ) }) citiesList.push(names) //XPath //*[@id="app"]/main/div/div/div[2]/div/div/div/div[1]/ul/li/a await page.waitForSelector('//*[@id="app"]/main/div/div/div[2]/div/div/div/div[1]/ul/li/a') const href = await page.$$eval('//*[@id="app"]/main/div/div/div[2]/div/div/div/div[1]/ul/li/a', (el) => { return el.map( a => a.getAttribute('href') ) }) citiesLinks.push(href)Con este código siempre obtendré este error.
Error: Evaluation failed: DOMException: Failed to execute 'querySelector' on 'Document': '//*[@id="app"]/main/div/div/div[2]/div/div/div/div[1]/ul/li/a/span' is not a valid selector ¿Cómo puedo usar xpath con $$eval correctamente?
Lo he resuelto apuntando directamente a los elementos DOM que necesito. En mi caso, tengo una etiqueta li con clase de arranque .list-item .
await page.waitForSelector('li.list-item > a', (el) => { return el.map( a => a.getAttribute('href') ) }) citiesLinks.push(href)