我的要求是在新的配置文件上测试 chrome 扩展。
我提到https://peter.sh/experiments/chromium-command-line-switches/ https://peter.sh/experiments/chromium-command-line-switches/对于 Chromium args[--user-data-dir, --profile-directory]
浏览器启动后,会打开 2 个 chrome 窗口。一个具有给定的配置文件和扩展名,另一个具有默认配置文件和给定的扩展名。焦点还集中在具有默认配置文件的窗口上。所以所有的动作都发生在它上面。
我原以为只会打开 1 个浏览器窗口并显示所需的配置文件和扩展名。
我尝试将焦点切换到所需的窗口,但 browser.BrowserContexts().length 为 1,这是具有默认配置文件的浏览器。 browser.targets() 还显示只有 1 个类型为浏览器的目标。
我的环境:
1.傀儡师版本:6.9.0
2.平台/操作系统版本:Windows 10 Pro版本1803
3. URL(如果适用):
4.Node.js版本:10.16.3
我尝试过的:
A。从 path\to\my\project\node_modules\puppeteer.local-chromium\win64-674921\chrome-win\chrome.exe 打开 chrome.exe
b.单击个人资料图标并打开“管理人员”对话框。
C。添加新人(个人资料)
d.打开 chrome://version 并记下配置文件路径并关闭浏览器。
e.创建example1.js、example2.js并使用node example1.js、node example2.js执行。下面给出了两个示例的代码。
示例1.js
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless:false, args:['--disable-extensions-except=\\path\\to\\my\\extension',
'--load-extension=\\path\\to\\my\\extension',
'--user-data-dir=%userprofile%\\AppData\\Local\\Chromium\\User Data',
'--profile-directory=Profile 1'
]});
const page = await browser.newPage();
await page.waitFor(5000);
await browser.close();
})();
示例2.js
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless:false, args:['--disable-extensions-except=c:\\dev\\prj\\vpnteam\\global VPN\\extension',
'--load-extension=c:\\dev\\prj\\vpnteam\\global VPN\\extension',
'--user-data-dir=c:\\Users\\govinda.s\\AppData\\Local\\Chromium\\User Data',
'--profile-directory=Profile 1'
]});
console.log(browser.browserContexts().length);
var x = await browser.targets();
for(let i=0;i<x.length;i++)
{
if(x[i].type()==='browser')
{
console.log(x[i]['_targetInfo']['targetId']);
}
}
await browser.close();
})();
我原以为 Puppeteer 应该启动 Chrome 并给出:
A。轮廓
b.应该为该配置文件加载给定的扩展。
然而,除了上述预期之外,
A。还启动了具有默认配置文件的浏览器。总共打开 2 个浏览器窗口。
b.具有默认配置文件的浏览器还加载了给定的扩展。
C。默认情况下,具有默认配置文件的浏览器具有焦点。
d. browser.browserContexts().length 为 1
e.只有 1 个目标类型为浏览器