Estoy tratando de seleccionar el primer elemento que no contiene el lapso: Geef seintje de un menú desplegable. Probé el código a continuación, este fragmento de código selecciona el primer elemento que contiene Geef seintje pero ¿cómo puedo hacer que seleccione el primer elemento que no contiene este intervalo?
const elements = await page.$x('//div[@role="presentation"][.//span[.="Geef seintje"]]'); console.log('found') await elements[0].click(); El html se puede encontrar en https://www.zalando.nl/jordan-air-jordan-1-mid-sneakers-hoog-joc12n001-a18.html y luego presionando el menú desplegable de tamaño, a continuación también hay una imagen del html La única diferencia en los elementos es que los que están agotados contienen una clase extra que contiene el lapso: Geef seintje .
Puede usar not en su xpath para decir que no contiene texto, y page.waitForXPath devuelve un solo elemento (el primero) en lugar de page.$x que devuelve todos los elementos coincidentes:
const firstElement = await page.waitForXPath("//span[not(contains(text(), 'Geef seintje'))]//ancestor::div[@role='presentation']");