Tag: google chrome headless

nightwatch.js无法在无头模式下运行chrome

如果没有打开可见的浏览器窗口,我无法运行它。 我用“无头的”和“ 无头的 ”的论点来尝试 注意:我没有使用Selenium。 根据这个页面,从60版开始,MacOSX支持无头模式。我运行的是版本61 https://developers.google.com/web/updates/2017/04/headless-chrome 这是我的configuration: "chrome" : { "desiredCapabilities": { "javascriptEnabled": true, "acceptSslCerts": true, "browserName": "chrome", "chromeOptions" : { "args" : ["–headless"], "binary": "google-chrome" } } },

通过木偶机循环表行

我想从表中的每一行获取链接。 这就是我得到第三(例如): 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 api:只能得到域名redirect

我试图使用Puppeteer api获取所有的域名redirect,在截取最终的URL之前保存到一个数组中,但是到目前为止,我的代码也获得了其他redirect。 例如,如果我goto youtube.com那么我的代码将正确获取redirect'https://youtube.com/', 'https://www.youtube.com/', ,但它也会得到其他redirect,如doubleclick.net。 我只想得到在URL栏中发生的redirect。 我已经设法缩小与request.resourceType === 'document' 。 我怎样才能进一步缩小呢? 代码如下: // node chrome.js http://youtube.com const puppeteer = require('puppeteer'); var url = process.argv[2]; (async () => { const browser = await puppeteer.launch({headless: true, timeout: 30000, ignoreHTTPSErrors: true}); const page = await browser.newPage(); // await page.setRequestInterception(true); // hangs with resourcetype const urls = []; […]

运行navalia示例的打字稿错误

我试图从https://github.com/joelgriffith/navalia运行这个例子,但为了我的光,我不能没有错误地工作: navaliatest.ts /// <reference path="typings.d.ts" /> import { Chrome } from 'navalia'; const chrome = new Chrome(); async function buyItOnAmazon() { const url = await chrome.goto('https://amazon.com'); const typed = await chrome.type('input', 'Kindle'); const clicked = await chrome.click('.nav-search-submit input'); chrome.done(); console.log(url, typed, clicked); // 'https://www.amazon.com/', true, true } buyItOnAmazon(); tsconfig.json { "files": [ "navaliatest.ts" ], "compilerOptions": […]

如何使用木偶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 […]

木偶:如何提交表单?

使用木偶 ,你怎么能以编程方式提交表单? 到目前为止,我已经能够使用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!', […]

如何处理puppeteer中的popup窗口

如何处理popup窗口并访问popup窗口来对其进行一些操作。 const puppeteer = require('puppeteer'); async function run() { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); await page.click(Launchpopup); }

节点:在文件夹上运行无铬自动化

我试图在我的testing文件夹中的所有文件上运行chromeless 这是我的index.js到目前为止 const {spawn} = require('child_process'); let fs = require('fs'); const proc = spawn('chrome', [ '–remote-debugging-port=9222', '–disable-gpu', '–headless' ]); console.log(`Spawned child pid: ${proc.pid}`); async function run() { let path = __dirname; const files = fs.readdirSync(path); for (let filename of files) { if (/.js$/.test(filename) && filename !== 'index.js') { console.log(`executing: ${path}\\${filename}`); const run = require(`${path}\\${filename}`); await […]