Akses pembolehubah tetingkap javascript dalam Puppeteer
P粉787806024
2023-09-04 23:32:41
<p>Dalam skrip Puppeteer saya, saya menggunakan fail JS untuk melaksanakan sebelum memuatkan halaman: </p>
<pre class="brush:js;toolbar:false;">const preloadFile = fs.readFileSync('./file.js', 'utf8');
const id = tunggu page.evaluateOnNewDocument(preloadFile);
</pra>
<p>file.js mengandungi: </p>
<pre class="brush:js;toolbar:false;">const i = setInterval(()=>{
if (window.turnstile) {
clearInterval(i)
window.turnstile.render = (a,b) =>
b.userAgent = navigator.userAgent
window.tsCallback = b.panggilan balik
tingkap.tindakan = b.tindakan
window.data = b.cData
console.log(b)
kembalikan 'foo'
}
}
},50)
</pra>
<p>Skrip ini mencetak objek (Tindakan, Cdata, Panggilan Balik...) pada konsol penyemak imbas</p>
<p>Saya mahu mendapatkan objek ini dari sisi boneka dan boleh memanggil panggilan balik fungsi(). </p>
<p>Saya menggunakan page.evaluate() tetapi ia tidak berkesan untuk saya</p>
Anda boleh menggunakan perpustakaan pembalut Puppeteer saya https://github.com/wix-incubator/bubanai/pulls untuk mencapai ini (dapatkan objek dari konsol pelayar), gunakan kaedah
new ConsoleDriver(context).getMessages()
dan kemudian tarik objek yang diterima Tukar dari tatasusunan kepada JSON...Atau hanya salin kod ConsoleDriver ke dalam projek anda.
Rujukan
Contoh penggunaan