function matchNodes(text) { try { const filter = { acceptNode: function(node){ if(node.nodeValue.toLowerCase().includes(text)){ return NodeFilter.FILTER_ACCEPT } return NodeFilter.FILTER_REJECT } } const nodes = [] const rootElement = document.body const walker = document.createTreeWalker(rootElement, NodeFilter.SHOW_TEXT, filter, false) while(walker.nextNode()) { nodes.push(walker.currentNode.parentNode) } console.log(nodes) // This will contain nodes return nodes } catch(e) { console.error(e) return e } } const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('http://www.greenmatters.com') const nodes = await page.evaluate(matchNodes, 'news') console.log('nodes', nodes) // This will be undefined await browser.close(); })();