Tag: puppeteer

使用Puppeteer回复Chrome的通知

有没有办法用木偶来回复Chrome的通知? 我已经尝试禁用通知(我想那么它只会select是默认?),但它没有帮助: const browser = await puppeteer.launch({headless: false, slowMo: 250, args: ["–disable-notifications"]});

通过木偶机循环表行

我想从表中的每一行获取链接。 这就是我得到第三(例如): await page.evaluate(() => document.querySelector(#content-tabs-0 > div > table > tbody > tr:nth-child(3) > td.mpt-1-td-desc > a").href) 我想遍历表行,我使用这样的代码: for(let i=1;i<=10;i++){ let link = await page.evaluate(() => document.querySelector("#content-tabs-0 > div > table > tbody > tr:nth-child("+i+") > td.mpt-1-td-desc > a").href); console.log(link); } 当我执行代码时,我得到这样的错误: (node:16928) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Evaluation failed: ReferenceError: […]

使用page.getMetrics()来获取木偶的页面加载时间

我正在尝试使用puppeteer来测量一组网站在我的环境中加载的速度。 我的重点是networking连接和networking速度的质量,所以我很高兴知道一个页面加载的时间,一个外行人的负载的定义,当所有的图像和HTML是由浏览器下载。 通过使用木偶,我可以重复运行testing,精确测量加载时间的差异。 我可以看到,在64.0.3240.0 (r508693) page.getMetrics和event: 'metrics'已经降落,这应该帮助我得到我正在寻找。 但作为节点和JS的新手,我不知道如何阅读page.getMetrics和哪些不同的键/值对给我的上下文中有用的信息。 我目前阅读指标的可怜尝试如下: const puppeteer = require('puppeteer'); async function run() { const browser = await puppeteer.launch({args: ['–no-sandbox', '–disable-setuid-sandbox']}); const page = await browser.newPage(); page.on('load', () => console.log("Loaded: " + page.url())); await page.goto('https://google.com'); const metrics = page.getMetrics(); console.log(metrics.Documents, metrics.Frames, metrics.JSEventListeners); await page.goto('https://yahoo.com'); await page.goto('https://bing.com'); await page.goto('https://github.com/login'); browser.close(); } run(); 任何帮助让这个代码更尊敬的东西是非常感谢:)

导航超时与puppeteer不一致

我正在使用async / await来运行10个并行的无头Chrome浏览器和puppeteer库,但是我一直使用这个代码来获得不一致的超时。 有时候,所有10个网页都可以正常工作,其他时间我会在30秒之后得到其中的7个。 const puppeteer = require('puppeteer') async function test() { const browser = await puppeteer.launch();//{headless: false} var sites = ['http://bbcnews.com','http://yahoo.com','http://cnn.com','http://quora.com','http://imgur.com','http://youtube.com','http://azure.com','http://kayak.com','http://medium.com','http://reddit.com']; var requests = []; for (let site of sites) { requests.push(run(browser, site)) } results = await Promise.all(requests); } async function run(browser, site) { try { var page = await browser.newPage(); //await page.setUserAgent("Mozilla/5.0 (X11; […]

puppeteer page.evaluate querySelectorAll返回空对象

我正在尝试puppeteer,这是一个示例代码,你可以在https://try-puppeteer.appspot.com/上运行它 问题是这段代码正在返回一个空对象的数组 [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{ },{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}, {},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{} {},{},{},{},{},{},{}] 我有什么错误吗? const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://reddit.com/'); let list = await page.evaluate(() => { return Promise.resolve(Array.from(document.querySelectorAll('.title'))); }); console.log(JSON.stringify(list)) await browser.close();

如何使用木偶wsendpoint打开链接

我尝试像这样使用wsendpoint连接浏览器: (async () => { const browser = await puppeteer.connect({browserWSEndpoint: 'ws://localhost:9222/devtools/page/eedbdd50-cd25-472d-a701-a0302d9ffe2f'}); const page = await browser.newPage(); await page.goto('https://www.google.com.tr'); })(); 这段代码可以打开新标签,但不要去链接。 它给错误: (node:2022) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Protocol error (Performance.enable): 'Performance.enable' wasn't found undefined (node:2022) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will […]

与Tor一起运行木偶

我安装了Tor Expert Bundle,我想用Puppeteer来运行它。 我尝试: const browser = await puppeteer.launch({headless: false,args:['–proxy-server="socks5://127.0.0.1:9050"']}); 但是我得到错误ERR_NO_SUPPORTED_PROXIES。 我可以使用普通的Chrome浏览器运行它。

木偶:等一个元素是可见的?

我想用木偶工具知道js工具是否可以等一个元素显示出来 const inputValidate = await page.$('input[value=validate]'); await inputValidate.click() //I want to do something like that waitElemenentVisble('.btnNext ') const btnNext = await page.$('.btnNext'); await btnNext.click(); 你怎么做这种types的东西?

导航页面,直到呈现最后一帧不networkidel

我正在截取大型html的截图,但每次我尝试拍摄图像时,都会在输出图像中获得大的空白区域。 我做了这么多的testing,并且发现在load事件之后渲染了框架,所以我不明白它在捕获的图像中。 这是显示性能的图像 显示load事件的红线和该行后面的帧。 我试图阅读包的所有文件,但我是一个土木工程师,不知道在编程很多,我尽我所能,找不到解决scheme。 page.goto有4个选项,它们不能解决问题,这里是文档的url。 https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagegotourl-options 这是我的代码 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('D:\Image_2.HTML', {waitUntil: 'load'}); function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } console.log(page.frames()) await page.screenshot({path: 'example.png',fullPage : true}); await browser.close(); })();

木偶:如何提交表单?

使用木偶 ,你怎么能以编程方式提交表单? 到目前为止,我已经能够使用page.click('.input[type="submit"]')如果表单实际上包含提交input。 但是,对于不包含提交input的表单,关注表单文本input元素并使用page.press('Enter')似乎实际上不会导致表单提交: const puppeteer = require('puppeteer'); (async() => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://stackoverflow.com/', {waitUntil: 'load'}); console.log(page.url()); // Type our query into the search bar await page.focus('.js-search-field'); await page.type('puppeteer'); // Submit form await page.press('Enter'); // Wait for search results page to load await page.waitForNavigation({waitUntil: 'load'}); console.log('FOUND!', […]