Загрузка распакованных расширений отключена администратором

Когда я запускаю сценарий моего веб-драйвера, я получаю диалоговое окно с сообщением ниже:

Ошибка загрузки расширения

Не удалось загрузить расширение из "C:\Users\имя пользователя \AppData\Local\Temp\scoped_dir6312_32763\internal". Загрузка распакованных расширений отключена администратором.

Хотите повторить попытку?

Да нет

Нажатие "да" позволяет запустить тесты.

Я не уверен, почему я получаю это диалоговое окно,

Я попробовал упомянутые обходные пути ниже, но ни один из них не работает:

  1. Заменен драйвер chrome на последнюю версию.
  2. Добавленный ниже код в моем скрипте:

    ChromeOptions options = new ChromeOptions();
    options.addArguments("no-sandbox");
    options.addArguments("disable-extensions");
    driver = new ChromeDriver(options);
    

Ниже мой метод испытаний:

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");
}

Ниже приведен метод, который вызывает браузер:

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();
}

Может ли быть что-либо еще, что я должен включить в свой сценарий, чтобы предотвратить диалоговое окно.

Ответы

Ответ 1

Вы можете установить для useAutomationExtension значение false.

    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(options);

Эта возможность поможет не загружать расширение Chrome Automation. Из-за этого всплывающее окно "Не удалось загрузить расширение" не появится.

Но учтите, что вы не сможете выполнять какие-либо операции изменения размера/позиционирования окна без расширения автоматизации Chrome.

Надеюсь, это поможет!

Источник: https://bugs.chromium.org/p/chromedriver/issues/detail?id=1749

Ответ 2

Я столкнулся с этой же проблемой после обновления до ChromeDriver v2.29. У меня Chrome v58.0. Это выглядит как открытый вопрос: https://bugs.chromium.org/p/chromedriver/issues/detail?id=639#c26

В зависимости от ваших версий, YMMV, в моем случае мне приходилось переходить на ChromeDriver v2.27.

Ответ 3

Это сообщение об ошибке...

Ошибка загрузки расширения

Не удалось загрузить расширение из "C:\Users\имя пользователя \AppData\Local\Temp\scoped_dir6312_32763\internal". Загрузка распакованных расширений отключена администратором.

Хотите повторить попытку?

Да нет

... подразумевает, что расширение не было загружено, поскольку оно было отключено администратором.

В соответствии с выпуском 1749: не удалось загрузить расширение из:... Загрузка распакованных расширений отключена администратором ChromeDriver использует расширение автоматизации Chrome для автоматизации различных функций, таких как изменение размера окна, позиционирование окна и т.д.

Не удалось загрузить расширение. всплывающее окно означает, что это расширение не было загружено. Если вы вручную закроете всплывающее окно, браузер будет работать как обычно, а команды ChromeDriver продолжат работать должным образом. Но в этом случае, если вы попытаетесь выполнить команды изменения размера окна или изменения положения окна, он выдаст ошибку как unknown error: cannot get automation extension.

До ChromeDriver v2.28 всякий раз, когда политика организации администрирования запрещала расширения, чтобы обойти ограничение, пользователи использовали аргумент disable-extensions следующим образом:

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);

и это сработало безупречно.

ChromeDriver v2.28 и далее, всякий раз, когда флаг disable-extensions проходит тест, ChromeDriver неявно передает флаг disable-extensions-except, который, в свою очередь, загружает расширение автоматизации Chrome. Это расширение помогает Chromedriver выполнять операции изменения размера окна и изменения положения окна.

Поэтому, если ваша политика администратора организации блокирует расширения, отображение всплывающего окна Не удалось загрузить расширение из:... Загрузка распакованных расширений является ожидаемым поведением.

Эта проблема зависела от поддержки Selenium для безголовых.

В качестве альтернативы вы можете установить для функции useAutomationExtension значение false следующим образом:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);

Эта возможность inturn поможет не загружать расширение Chrome Automation, и всплывающее окно Failed to load extension не появится. Но вы не сможете выполнять какие-либо операции изменения размера/позиционирования окна без расширения автоматизации Chrome.

Теперь поддержка Selenium для решения проблем безголового ChromeDriver больше не требует этого расширения, и вы не должны были видеть эту ошибку/всплывающее окно.

Решение

Простейшим решением было бы использовать последнюю версию комбинации ChromeDriver и Chrome среди следующих:

  • Если вы используете Chrome версии 73, загрузите ChromeDriver 73.0.3683.20
  • Если вы используете Chrome версии 72, загрузите ChromeDriver 2.46 или ChromeDriver 72.0.3626.69
  • Если вы используете Chrome версии 71, загрузите ChromeDriver 2.46 или ChromeDriver 71.0.3578.137
  • Для более старой версии Chrome см. это обсуждение.

Альтернативный

Некоторые другие альтернативы:

  • Добавьте ключ реестра ExtensionInstallWhitelist в белый список
  • Удалите ключ реестра ExtensionInstallBlacklist, содержащий строковый ключ 1 со значением *

Ответ 4

Если вы перейдете к chrome://version/ вы можете увидеть под Command:

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:,

Вот почему он бросает ошибку, я не знаю, почему она дает ошибку, может быть, политика пользователя или обновления Chrome?

--disable-extensions-except="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_6333\internal"

Я считаю, что аргумент добавлен Selenium, вам нужна следующая команда, чтобы сказать, что селен не добавляет его.

В С#:

chromeOptions = OpenQA.Selenium.Chrome.ChromeOptions();
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
river = new ChromeDriver(chromeOptions);
launchApp();

В Java:

chromeOptions.AddAdditionalCapability("useAutomationExtension", false)

Ответ 5

//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);

Ответ 6

Ниже код работает отлично для меня chrome driver 2.41 и браузера версии 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");
  }
}

Он успешно запускает браузер Chrome без всплывающего окна "Загрузка распакованного расширения отключена администратором"

Ответ 7

    ChromeOptions options = new ChromeOptions();
    System.setProperty("webdriver.chrome.driver", "C:\\drivers\\chromedriver.exe");

    options.setExperimentalOption("useAutomationExtension", false);
    driver = new ChromeDriver(options);

Ответ 8

Я попробовал кучу вещей, таких как удаление * записи черного списка Chrome в реестре Windows (это болезненный взлом, потому что он будет отменен пару раз в неделю по политике группы компаний). Наконец я придумал рабочее решение. В следующем коде появляется "расширение загрузки ошибок".

${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}

Ответ 9

Ниже код работает для меня:

Установите для useAutomationExtension значение false

options.setExperimentalOption("useAutomationExtension", false);

Полный код:

    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/");