人偶在当前窗口中启动一个新选项卡,而不是新窗口

时间:2019-03-20 18:05:04

标签: javascript google-chrome chromium puppeteer

我已经尝试了几乎所有内容,但是似乎无法弄清楚如何让Puppeteer在当前的浏览器窗口(我登录到Chrome的位置)而不是新的无缓存注销的浏览器中工作。这是我当前的配置设置。我尝试过使用远程调试端口先启动chrome,将参数数据加载到args中以启动puppeteer,启动Chromium和当前的Chrome安装路径,等等。这是当前的代码:

const opts = {
  logLevel: 'info',
  output: 'json'
};


const chrome = await chromelauncher.launch( {port:9222 });
opts.port = chrome.port;

// Connect to it using puppeteer.connect().
const resp = await util.promisify(request)(`http://localhost:${opts.port}/json/version`);
const {webSocketDebuggerUrl} = JSON.parse(resp.body);
const browser = await puppeteer.connect({browserWSEndpoint: webSocketDebuggerUrl, 
  args: ["--disable-extensions"]});
const page = await browser.newPage();
await page.setViewport({ width: 1366, height: 768});

我已经没有足够的资源来查找了,如果看起来有些麻烦,请告诉我。谢谢!

3 个答案:

答案 0 :(得分:1)

您必须使用userDataDir重用缓存。

puppeteer.launch({
  userDataDir: 'PATH TO DATA FOLDER',
})

您可以在此处找到数据目录,

  • Windows 7、8.1和10:C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
  • Mac OS X El Capitan:Users/<username>/Library/Application Support/Google/Chrome/Default
  • Linux:/home/<username>/.config/google-chrome/default

另一种方法是打开chrome://version并从那里选择路径,

enter image description here

现在,删除Default,您将获得数据目录,

  • [个人资料路径] C:\Users\Alice\AppData\Local\Google\Chrome\User Data\Default
  • [用户数据目录] C:\Users\Alice\AppData\Local\Google\Chrome\User Data

所以代码看起来像

puppeteer.launch({
  userDataDir: `C:\Users\Alice\AppData\Local\Google\Chrome\User Data`, 
  // <-- notice I used backtick to avoid writing backslashs
})

详细了解数据目录here

另一个有趣的参数是--profile-directory,您可以命名配置文件并使用它。

--profile-directory=Default

答案 1 :(得分:0)

由于我使用Chromium浏览器而不是系统chrome浏览器,但是我将Chromium设置保存在项目PeaceOut中,因此不确定这是否对您的情况有用。 我仍在学习如何使用puppeteer,因此可能无法以最佳方式做所有事情。

const browser = await puppeteer.launch({
    headless: false,
    devtools: true,
 // slowMo: 250 // slow down by 250ms
 // executablePath <string> Path to a Chromium or Chrome executable to run
    userDataDir: 'C:\\Users\\TeDev\\Scrape\\PeaceOut\\bdata' 
 // userDataDir <string> Path to a User Data Directory.
});
const page = await browser.pages();
await page[0].setViewport({ width: 1280, height: 1080 })
console.log(`Trying to access ${URL}`);
await page[0].goto(URL);  // use tab 0, so Chromium doesn't show a blank tab.

答案 2 :(得分:0)

启动时添加 --new-window 参数