Estoy tratando de usar titiritero para obtener el contenido de propiedad de un elemento, editarlo y ejecutar la versión editada. Por ejemplo: Existe este elemento:
<a href="#" onclick="mojarra.jsfcljs(document.getElementById('j_idt58'),{'j_idt58:j_idt201:0:j_idt203':'j_idt58:j_idt201:0:j_idt203'},'_blank');return false" class="btn btn-info"></a>Lo que necesito es obtener el contenido onclick, eliminar el parámetro _blank y ejecutar el resto de la función... ¿Alguna idea?
tal vez no sea la solución más poderosa que existe, pero si solo necesita hacer esto en esta etiqueta específica, puede configurar el atributo onclick con JavaScript dentro de page.evalauate de esta manera:
await page.evalauate(() => { document .querySelector(".btn.btn-info") .setAttribute( "onclick", document .querySelector(".btn.btn-info") .onclick.toString() .split("\n")[1] .replace(",'_blank'", "") ); }); await page.click(".btn.btn-info");¿Que está pasando aqui?
page.evaluatedocument.querySelectoronclick (¡no su propiedad!)onclick como cadena: mojarra.jsfcljs(document.getElementById('j_idt58'),{'j_idt58:j_idt201:0:j_idt203':'j_idt58:j_idt201:0:j_idt203'},'_blank');return false'function onclick(event) {' cuando la reasignamos como el atributo),'_blank' de la función original (cadena). mojarra.jsfcljs(document.getElementById('j_idt58'),{'j_idt58:j_idt201:0:j_idt203':'j_idt58:j_idt201:0:j_idt203'});return falsepage.click ejecuta la nueva función alternativamente, puede usar attributes.onclick.nodeValue si no se siente cómodo con toString().split("\n")[1] arriba:
document.querySelector(".btn.btn-info").attributes.onclick.nodeValue.replace(",'_blank'", "")