2017-11-27 2 views
0

Ich benutze derzeit Puppeteer und wenn ich diese Funktion aufrufen, ist der "Selektor" nicht definiert.Parameter von jQuery in JavaScript-Funktion extrahieren

async function verifyTextPresent(page, selector){ 
 
    let myButton = await page.evaluate(() => document.querySelector(selector).innerText); 
 
    console.log(myButton); 
 
}

ERROR:

(node:6996) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Evaluation failed: ReferenceError: selector is not defined 
    at <anonymous>:1:20 
(node:6996) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the 
Node.js process with a non-zero exit code. 
+0

heißt dies, bevor Seite ist bereit? –

+0

Müssen Sie das 'Dokument' an die' evaluate' Funktion übergeben? 'page.evaluate (document => document.querySelector (selector) .innerText)'. (Außerdem könnte es sich lohnen, 'textContent' anstelle von' innerText' zu verwenden). – Andy

Antwort

0

Sie müssen die Wähler in Auswertung so passieren:

async function verifyTextPresent(page, selector){ 
    let myButton = await page.evaluate((selector) => { 
     document.querySelector(selector).innerText); 
    } 
    console.log(myButton); 
} 

Ich ziehe es auch eine Verknüpfung $ eval:

let myButton = await page.$eval(selector, e => e.innerText); 
+0

Vielen Dank Raul! Ich habe eine andere Lösung gefunden, aber versuche deine, weil es einfacher ist. Auch, was ist "e"? –

+0

Kein Problem, e für persönliche Referenzen ist das Element, aber Sie können einen beliebigen Namen geben, es ist eine Variable, die Ihren Selektor enthält. –

+0

Es hat perfekt funktioniert! danke Freund –

0

landete ich mit dieser Lösung die Säge ändert es den Text bekommt:

async function verifyTextPresent(page, selector){ 
    let myButton= await page.$(selector); 
    let selectorText = await (await elementForText.getProperty('innerText')).jsonValue(); 
     console.log(selectorText); 
    } 
Verwandte Themen