Accéder aux variables de la fenêtre javascript dans Puppeteer
P粉787806024
2023-09-04 23:32:41
<p>Dans mon script Puppeteer, j'utilise le fichier JS à exécuter avant de charger la page : </p>
<pre class="brush:js;toolbar:false;">const preloadFile = fs.readFileSync('./file.js', 'utf8');
const id = wait page.evaluateOnNewDocument(preloadFile);
≪/pré>
<p>file.js contient : </p>
<pre class="brush:js;toolbar:false;">const i = setInterval(()=>{
si (fenêtre.tourniquet) {
clearInterval(i)
window.turnstile.render = (a,b) =>
b.userAgent = navigateur.userAgent
window.tsCallback = b.callback
fenêtre.action = b.action
window.data = b.cData
console.log(b)
renvoyer 'foo'
}
}
},50)
≪/pré>
<p>Ce script imprime un objet (Action, Cdata, Callback...) sur la console du navigateur</p>
<p>Je souhaite récupérer cet objet du côté du marionnettiste et pouvoir appeler la fonction callback(). </p>
<p>J'ai utilisé page.evaluate() mais cela n'a pas fonctionné pour moi</p>
Vous pouvez utiliser ma bibliothèque de wrapper Puppeteer https://github.com/wix-incubator/bubanai/pulls pour y parvenir (récupérer l'objet depuis la console du navigateur), utiliser la méthode
new ConsoleDriver(context).getMessages()
puis extraire l'objet reçu Convertir de tableau en JSON...Ou copiez simplement le code ConsoleDriver dans votre projet.
Référence
Exemple d'utilisation