Übergabe von Variablen an die Evaluate-Funktion von Puppeteer
In Puppeteer ermöglicht die page.evaluate()-Funktion Entwicklern, JavaScript im Browserkontext auszuführen. Die Übergabe von Variablen an diese Funktion kann jedoch schwierig sein.
Betrachten Sie das folgende Beispiel:
const puppeteer = require('puppeteer'); (async() => { const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); const evalVar = 'WHUT??'; try { await page.goto('https://www.google.com.au'); await page.waitForSelector('#fbar'); const links = await page.evaluate((evalVar) => { console.log('evalVar:', evalVar); // appears undefined const urls = []; hrefs = document.querySelectorAll('#fbar #fsl a'); hrefs.forEach(function(el) { urls.push(el.href); }); return urls; }) console.log('links:', links); } catch (err) { console.log('ERR:', err.message); } finally { // browser.close(); } })();
In diesem Beispiel ist die Variable evalVar innerhalb der Funktion page.evaluate() undefiniert. Um dieses Problem zu beheben, muss die Variable als Argument an die Seitenfunktion übergeben werden:
const links = await page.evaluate((evalVar) => { console.log(evalVar); // 2. should be defined now ... }, evalVar); // 1. pass variable as an argument
Mit diesem Ansatz können Variablen einfach an die Funktion page.evaluate() übergeben werden, wodurch die Ausführung von ermöglicht wird komplexere Vorgänge im Browserkontext.
Das obige ist der detaillierte Inhalt vonWie kann ich Variablen ordnungsgemäß an die Funktion „page.evaluate()' von Puppeteer übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!