Mon exigence est de tester chrome Extensions sur un nouveau profil.
J'ai renvoyé https://peter.sh/experiments/chromium-command-line-switches/ pour chrome args [- utilisateur-Data-Dir, annuaire -Profile]
Une fois que le navigateur est lancé, 2 chrome Windows est ouvert. L'un avec le profil donné et l'extension et un autre avec profil par défaut et une extension donnée. L'accent est également sur une fenêtre avec le profil par défaut. Alors toutes les actions se passent dessus.
J'avais censé que seulement 1 fenêtre de navigateur soit ouverte avec le profil et l'extension souhaités.
J'ai essayé de changer de mise au point sur la fenêtre souhaitée, mais Browser.BrowserContexts (). La longueur est 1, qui est navigateur avec profil par défaut. Aussi Browser.Tarets () montre qu'il n'ya qu'une cible avec type comme navigateur.
Mon environnement:
1. Version de la marionnettiste: 6.9.0
[.____] 2. Version Platform/OS: Windows 10 Pro Version 1803
3. URL (le cas échéant):
[.____] 4. NODE.JS Version: 10.16.3
Ce que j'ai essayé:
une. Ouvrez Chrome.exe de Chemin\à\My\Project\Node_Modules\Puppeteer.Local-Chrome\Win64-674921\chrome-win\chrome.exe
[.____] b. Cliquez sur l'icône du profil et ouvrez la boîte de dialogue Gérer les personnes.
[.____] c. Ajouter une nouvelle personne (profil)
ré. Ouvrez Chrome: // version et apportez une note de chemin de profil et fermez le navigateur.
[.____] e. Créez exemple1.js, exemple2.js et exécutez-le à l'aide d'un exemple d'exemple1.js, noeud Exemple2.js. Le code des deux exemples est indiqué ci-dessous.
exemple1.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();
})();
exemple2.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();
})();
J'avais attendu que la marionnettiste soit lancée Chrome avec donné:
une. Profil
[.____] b. L'extension donnée doit être chargée pour ce profil.
Cependant, mis à part les attentes ci-dessus,
une. Un navigateur avec profil par défaut est également lancé. Au total, 2 fenêtres de navigateur sont ouvertes.
[.____] b. Le navigateur avec profil par défaut a également donné une extension chargée.
[.____] c. Par défaut, le navigateur avec le profil par défaut a la mise au point.
ré. Browser.BrowseContexts (). La longueur est 1
[.____] e. Il n'y a que 1 cible avec le navigateur de type
Nous devons utiliser Puppeteer-Core afin d'utiliser le chrome/le bord existant, etc. J'ai trouvé ce qui suit fonctionne dans ma fenêtre 10.
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
headless: false,
executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
args: [
'--user-data-dir=%userprofile%\\AppData\\Local\\Chrome\\User Data',
'--profile-directory=Profile 8'
]
});
})();