Загрузка распакованных расширений отключена администратором
Когда я запускаю сценарий моего веб-драйвера, я получаю диалоговое окно с сообщением ниже:
Ошибка загрузки расширения
Не удалось загрузить расширение из "C:\Users\имя пользователя \AppData\Local\Temp\scoped_dir6312_32763\internal". Загрузка распакованных расширений отключена администратором.
Хотите повторить попытку?
Да нет
Нажатие "да" позволяет запустить тесты.
Я не уверен, почему я получаю это диалоговое окно,
Я попробовал упомянутые обходные пути ниже, но ни один из них не работает:
- Заменен драйвер chrome на последнюю версию.
Добавленный ниже код в моем скрипте:
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/");