重用浏览器实例Puppeterr [英] reuse browser instance puppeterr

查看:17
本文介绍了重用浏览器实例Puppeterr的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道是否可能有一个.js文件打开浏览器实例,创建新的页面/选项卡登录到网站(使用用户名/密码),然后保持空闲状态。
在另一个.js文件中使用一个浏览器实例及其页面。

1.js

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({ 
        headless: true,
        args: ['--no-sandbox'], 
        ignoreDefaultArgs: ["--hide-scrollbars"]
    });

    const page = await browser.newPage();
    const response = await page.goto('https://google.com');

    console.log('Browser open in the background (headless)!');
    //await browser.close();
})();

2.js

const puppeteer = require('puppeteer');

(async () => {
    // instructions on browser instance/page from 1.js ...
})();

推荐答案

Crawler对象保留浏览器实例的状态,并且 无论您在哪里调用/传递该实例,它都引用相同的铬 在"背景"里。如果这是矫枉过正,而你只是想 使用木偶戏连接到已经在运行的铬,您可以做到这一点 带着木偶师。连接。看看这个: How to "hook in" puppeteer into a running Chrome instance/tab-Mbit

是的,我想这对我来说有点过头了:)。但是您发布的链接正是我想要的,但有两个问题。

这是我的样本。

// 1.js
// open chromium, new tab, go to google.com, print browserWSEndpoint, disconnect
const puppeteer = require('puppeteer');

(async () => {
    var browser = await puppeteer.launch({headless: false});
    var page = await browser.newPage();
    var response = await page.goto('https://google.com');

    var browserWSEndpoint = browser.wsEndpoint();
    console.log(browserWSEndpoint); // prints: ws://127.0.0.1:51945/devtools/browser/6462daeb-469b-4ae4-bfd1-c3bd2f26aa5e

    browser.disconnect();
})();

// 2.js
// connect to the open browser with the browserWSEndpoint manualy put in, ... , disconect. 
const puppeteer = require('puppeteer');

(async () => {
    var browser = await puppeteer.connect({browserWSEndpoint: 'ws://127.0.0.1:51945/devtools/browser/6462daeb-469b-4ae4-bfd1-c3bd2f26aa5e'});

    // somehow use the tab that is open from 1.js (google.com)

    await browser.disconnect();
})();

我从console.log 1.js中获得BrowserWSEndpoint字符串。 它工作得很好,但我有两个困难。

1-如何使用1.js中的变量browserWSEndpoint,以便不必总是将其复制粘贴到2.js。

2-如果我在1.js上打开一个新页面/选项卡,例如转到Google并断开连接(browser.disconnect()),如何在2.js上使用该页面/选项卡。

这篇关于重用浏览器实例Puppeterr的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆