Lorsque j'exécute mon script webdriver, une boîte de dialogue de confirmation contenant le message ci-dessous s'affiche:
Erreur de chargement de l'extension
Impossible de charger l'extension à partir de 'C:\Utilisateurs\nom d'utilisateur\AppData\Local\Temp\scoped_dir6312_32763\internal'. Le chargement des extensions décompressées est désactivé par l'administrateur.
Voulez-vous réessayer?
Oui Non
En cliquant sur "oui", les tests sont exécutés.
Je ne suis pas sûr de savoir pourquoi je reçois cette boîte de dialogue,
J'ai essayé les solutions de contournement mentionnées ci-dessous, mais aucune d'entre elles ne fonctionne:
Ajout du code ci-dessous dans mon script:
ChromeOptions options = new ChromeOptions();
options.addArguments("no-sandbox");
options.addArguments("disable-extensions");
driver = new ChromeDriver(options);
Ci-dessous ma méthode de test:
public void Login() throws IOException{
test = extent.startTest("Login");
signInPage = new SignInPage(driver);
signInPage.enterMailId();
String screenShotPath = GetScreenShot.capture(driver, "enterMailId");
test.log(LogStatus.PASS, "Email id is entered successfully: " + test.addScreenCapture(screenShotPath));
signInPage.enterpwd();
//test.log(LogStatus.INFO, "Password is entered successfully");
screenShotPath = GetScreenShot.capture(driver, "enterpwd");
test.log(LogStatus.PASS, "Password is entered successfully: " + test.addScreenCapture(screenShotPath));
signInPage.clickOnLogin();
test.log(LogStatus.PASS, "User logged in successfully");
}
Voici la méthode qui appelle le navigateur:
private void initChromeBrowser(){
System.setProperty("webdriver.chrome.driver", userdir +"\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
options.addArguments("no-sandbox");
//Fix for cannot get automation extension
options.addArguments("disable-extensions");
options.addArguments("start-maximized");
options.addArguments("--js-flags=--expose-gc");
options.addArguments("disable-plugins");
options.addArguments("--enable-precise-memory-info");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-default-apps");
options.addArguments("test-type=browser");
options.addArguments("disable-infobars");
driver = new ChromeDriver(options);
launchApp();
}
Pourrait-il y avoir autre chose que je devrais incorporer dans mon script pour empêcher la boîte de dialogue.
Vous pouvez définir la capacité useAutomationExtension
sur false.
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
Cette fonctionnalité vous aidera à ne pas charger Chrome. Automatisation. Pour cette raison, "Impossible de charger l'extension" une fenêtre contextuelle ne pas apparaître.
Notez cependant que vous ne pourrez effectuer aucune opération de redimensionnement/positionnement de la fenêtre sans l’extension d’automatisation Chrome.
J'espère que cela t'aides!
Source: https://bugs.chromium.org/p/chromedriver/issues/detail?id=1749
J'ai rencontré le même problème après la mise à niveau vers ChromeDriver v2.29. J'ai Chrome v58.0. Cela ressemble à un problème en suspens: https://bugs.chromium.org/p/chromedriver/issues/detail?id=639#c26
Selon vos versions, YMMV, dans mon cas, j'ai dû passer à ChromeDriver v2.27.
Ce message d'erreur ...
Erreur de chargement de l'extension
Impossible de charger l'extension à partir de 'C:\Utilisateurs\nom d'utilisateur\AppData\Local\Temp\scoped_dir6312_32763\internal'. Le chargement des extensions décompressées est désactivé par l'administrateur.
Voulez-vous réessayer?
Oui Non
... implique qu'une extension n'a pas été chargée car elle a été désactivée par l'administrateur.
Selon Problème 1749: Échec de chargement de l'extension à partir de: ... Le chargement d'extensions décompressées est désactivé par l'administrateur ChromeDriver utilise l'extension d'automatisation Chrome pour automatiser diverses fonctions telles que le dimensionnement de la fenêtre, le positionnement de la fenêtre, etc.
Le Echec du chargement de l'extension .. contextuel signifie que cette extension n'a pas été chargée. Si vous fermez manuellement la fenêtre contextuelle, le navigateur agira normalement et les commandes ChromeDriver continueront de fonctionner comme prévu. Mais dans ce cas, si vous essayez d’exécuter des commandes de redimensionnement ou de repositionnement de fenêtre, une erreur sera générée unknown error: cannot get automation extension
_ .
Jusqu'à ChromeDriver v2.28 chaque fois que la stratégie d'administration d'une entreprise interdit les extensions interdites, pour contourner la restriction, les utilisateurs ont utilisé l'argument disable-extensions
comme suit:
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);
et cela a fonctionné perfecto.
ChromeDriver v2.28, à chaque fois que disable-extensions
le drapeau est passé par test, ChromeDriver passe implicitement disable-extensions-except
_ indicateur qui charge à son tour extension d’automatisation Chrome. Cette extension aide Chromedriver à effectuer des opérations de redimensionnement et de repositionnement de fenêtre.
Ainsi, si votre politique d'administration d'organisation bloque les extensions, l'affichage de la fenêtre contextuelle n'a pas pu charger l'extension à partir de: ... Le chargement d'extensions décompressées est un comportement attendu.
Ce problème dépendait de support Selenium pour les sans tête .
Vous pouvez également définir la fonctionnalité useAutomationExtension
sur false
comme suit:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
Cette fonctionnalité vous aidera à ne pas charger extension de Chrome Automation et Failed to load extension
_ popup n'apparaitra pas. Mais vous ne pourrez effectuer aucune opération de redimensionnement/positionnement de la fenêtre sans extension d'automatisation Chrome.
Maintenant, prise en charge de Selenium pour headless en cours de résolution ChromeDriver ne nécessitera plus cette extension et vous ne devriez pas avoir vu cette erreur/popup.
La solution la plus simple consisterait à utiliser la dernière version de ChromeDriver et Chrome combinaison parmi les suivantes:
ChromeDriver 73.0.3683.20
ChromeDriver 2.46
ou ChromeDriver 72.0.3626.69
ChromeDriver 2.46
ou ChromeDriver 71.0.3578.137
Quelques autres alternatives sont:
ExtensionInstallWhitelist
à la liste blancheExtensionInstallBlacklist
contenant une clé de chaîne 1 avec une valeur *
Si vous allez à chrome://version/
, Vous pouvez voir sous la commande:
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-extensions --disable-extensions-except="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_6333\internal" --disable-hang-monitor --disable-popup-blocking --disable-Prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtrials=SiteIsolationExtensions/Control --ignore-certificate-errors --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --remote-debugging-port=12354 --safebrowsing-disable-auto-update --start-maximized --test-type=webdriver --use-mock-keychain --user-data-dir="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_30914" --flag-switches-begin --flag-switches-end data:,
C’est pourquoi il jette une erreur, je ne sais pas pourquoi il donne une erreur, peut-être une stratégie utilisateur ou Chrome met à jour?
--disable-extensions-except="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_6333\internal"
Je crois que l'argument est ajouté par Selenium, vous avez besoin de la commande suivante pour indiquer à Selenium de ne pas l'ajouter.
En C #:
chromeOptions = OpenQA.Selenium.Chrome.ChromeOptions();
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
river = new ChromeDriver(chromeOptions);
launchApp();
En Java:
chromeOptions.AddAdditionalCapability("useAutomationExtension", false)
Le code ci-dessous fonctionne correctement pour moi chrome pilote 2.41 et version du navigateur 68.0.3440.84
public class patCheck {
WebDriver driver;
@Test
public void f() {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\shirish.nagar\\Work\\Selenium\\Web\\Drivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.get("https://www.google.com");
}
}
Il appelle avec succès le navigateur chrome sans afficher la fenêtre contextuelle "chargement de l'extension non compressée désactivée par l'administrateur"
ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver", "C:\\drivers\\chromedriver.exe");
options.setExperimentalOption("useAutomationExtension", false);
driver = new ChromeDriver(options);
//Set the system property for chrome browser location
System.setProperty("webdriver.chrome.driver", Global.sChromeDriverPath);
//Set the Chrome capabilities
ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
options.addArguments("start-maximized");
options.addArguments("--js-flags=--expose-gc");
options.addArguments("--enable-precise-memory-info");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-default-apps");
options.addArguments("--enable-automation");
options.addArguments("test-type=browser");
options.addArguments("disable-infobars");
options.addArguments("disable-extensions");
options.setExperimentalOption("useAutomationExtension", false);
Global.driver = new ChromeDriver(options);
Le code ci-dessous fonctionne pour moi:
Définissez useAutomationExtension sur false
options.setExperimentalOption("useAutomationExtension", false);
Code complet:
System.setProperty("webdriver.chrome.driver", "C:\\Selenium Drivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setAcceptInsecureCerts(true);
options.merge(capabilities);
options.addArguments("--test-type");
options.addArguments("start-maximized");
options.addArguments("--js-flags=--expose-gc");
options.addArguments("--enable-precise-memory-info");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-default-apps");
options.addArguments("--enable-automation");
options.addArguments("disable-extensions");
options.setExperimentalOption("useAutomationExtension", false);
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--no-sandbox");
options.addArguments("disable-infobars");
driver = new ChromeDriver(options);
driver.get("https://www.google.com/");
J'ai essayé diverses choses, telles que la suppression de l'entrée * de Chrome dans le registre de Windows (ce qui est un bidouillage pénible car elle est inversée plusieurs fois par semaine par la stratégie du groupe de sociétés). La solution de travail a finalement été trouvée. Avec le code suivant, la fenêtre contextuelle "extension de chargement d'erreur" n'apparaît plus.
${options}= Evaluate sys.modules['Selenium.webdriver'].ChromeOptions() sys, Selenium.webdriver
Call Method ${options} add_argument --start-maximized
Call Method ${options} add_experimental_option useAutomationExtension ${False}
Create WebDriver Chrome chrome_options=${options}