Soy nuevo en titiritero y trato de convertir este código javascript:
let messageElement; await driver.findElements(By.className("message-list-item")).then( (ok) => { messageElement = ok.pop() } ) await messageElement.getAttribute("id").then( (ok) => { messageNum = parseInt(ok.split("message")[1]); } )El método ".pop ()" debe convertirse y sé que con titiritero podemos usar "longitud - 1", pero no puedo. He intentado esto:
const el = await page.$('.message-list-item') .then( (elements) => elements[el.length - 1]);Pero no trabajo.
Esto no tiene nada que ver con "convertir .pop() en titiritero". pop es una función estándar en el prototipo Array. De acuerdo con los documentos del titiritero, la page.$(<selector>) realiza un querySelector en los nodos DOM, que devuelve el nodo DOM directamente en lugar de una matriz de nodos DOM, por lo que no necesita usar pop ni ninguna otra matriz. función.
const el = await page.$('.message-list-item') .then( (element) => element));que es equivalente a
const el = await page.$('.message-list-item');EDITAR
Si desea el último elemento con ese nombre de clase, debe obtener una lista de esos elementos, para lo cual puede usar $$ que, según los documentos, usa querySelectorAll y luego obtener el último elemento.
const el = await page.$$('.message-list-item', (e) => e[e.length - 1]);Con :
const h4All = await page.$$('.message-list-item'); const h4Count = h4All.length; const fileName = h4All[h4Count - 1]; const id= await (await fileName.getProperty("id")).jsonValue(); console.log(await id); messageNum = parseInt(id.split("message")[1]); console.log(messageNum);Es trabajo, gracias por tu ayuda! ¿Puedo preguntarte otro problema? Tengo este javascript:
let messageNum = 0; let lastMessageElement let y = false; while(!y){ console.log("Message de recherche " + messageNum); await driver.findElement(By.id("message"+messageNum.toString())).then( (ok) => { console.log("Trouvé"); y = true; lastMessageElement = ok; }, (error) => { console.log("Error"); } ) if(!y) await driver.sleep(5000); }Intenta convertir en titiritero:
let messageNum = 0; let lastMessageElement let y = false; while(!y){ console.log("Message de recherche " + messageNum); const lastMessageElement = await page.$$("message"+messageNum.toString()); console.log(lastMessageElement); if (lastMessageElement) { console.log("Trouvé"); console.log(lastMessageElement); y = true; } else { console.log("Error"); } if(!y) await page.waitForTimeout(5000); }Pero no es bueno... Gracias de nuevo