Отключить расширения режима разработчика в Chrome
Начиная с последней версии chrome (34.0.1847.116) на прошлой неделе, я получаю "Отключить расширения режима разработчика" при запуске автоматических тестов с использованием watir-webdriver.
Это похоже на оскорбительное расширение, но мне не имеет смысла, что это потенциально опасное расширение, учитывая его использование хромированным рекордером.
Любой, кто нашел исправление для этого, так как я не могу вернуться к предыдущей версии или найти установщика для более старой версии, чтобы вернуться к ней, и это ведет к хаосу с моими тестами.
![enter image description here]()
![enter image description here]()
Ответы
Ответ 1
При создании драйвера chrome используйте параметр, чтобы отключить его.
Его работа без каких-либо расширений.
Используйте следующий фрагмент кода
ChromeOptions options = new ChromeOptions();
options.addArguments("chrome.switches","--disable-extensions");
System.setProperty("webdriver.chrome.driver",(System.getProperty("user.dir") + "//src//test//resources//chromedriver_new.exe"));
driver = new ChromeDriver(options);
Ответ 2
Официальный способ отключения всплывающего окна выглядит следующим образом:
-
Упакуйте свое расширение (chrome://extensions/
, отметьте "Режим разработчика", нажмите "Упаковать расширение...") и установите его путем перетаскивания файла .crx
на страницу chrome://extensions
.
(Вы получите всплывающее окно "Неподдерживаемые расширения отключены", если вы попытаетесь перезапустить Chrome на этом этапе)
Тогда для Win7/8:
- Загрузите шаблоны групповой политики Chrome с:
http://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip
- Скопируйте
[zip]\windows\admx\chrome.admx
в c:\windows\policydefinitions
- Скопируйте
[zip]\windows\admx\[yourlanguage]\chrome.adml
в
c:\windows\policydefinitions\[yourlanguage]\chrome.adml
(не c:\windows\[yourlanguage]
) - В Chrome перейдите на страницу "Расширения" (chrome://extensions)
- Установите флажок Режим разработчика вверху
- Прокрутите список отключенных расширений и запишите идентификаторы расширений, которые вы хотите включить. LogMeIn, например, является ID:
nmgnihglilniboicepgjclfiageofdfj
- Нажмите
Start
> Run
и введите gpedit.msc
<ENTER>
- Разверните
User Configuration
> Administrative Templates
> Google Chrome
> Extensions
- Дважды щелкните, чтобы открыть
Configure extension installation whitelist
политики Configure extension installation whitelist
- Выберите
Enabled
, затем нажмите Show...
- В списке введите идентификаторы добавочных номеров, которые вы отметили на шаге 7.
- Нажмите
OK
и перезапустите Chrome.
Это!
По состоянию на июль 2018 года этот подход больше не работает: похоже, Google прекратил соблюдать "белый список"
РЕДАКТИРОВАТЬ: По состоянию на 16.10.2008, этот подход работает. (Версия Chrome 69.0.3497.100 (официальная сборка) (64-разрядная версия))
1.Временно включите режим разработчика в chrome://extensions/
2. Удалите расширение, которое вы установили (точнее, расширение, вызывающее всплывающее окно), используя "Загрузить распакованный".
3.Нажмите на расширение пакета и введите корневой каталог файлов (поместите файлы расширения в одну папку/одну папку на расширение, вызывающее ошибку), не вводите файл закрытого ключа, если у вас его нет.
4. Нажмите расширение пакета. Файлы с расширением .crx и .pem будут созданы рядом с корневым каталогом расширения. Установите расширение, используя файл crx, и сохраните файл pem в безопасности (если вы удалите его или что-то пойдет не так, вы всегда можете перепаковать расширение).
5. Затем скопируйте идентификатор установленного расширения crx в белый список и перезапустите Chrome.
Всплывающее окно должно исчезнуть.
Ответ 3
От май 2015 Chrome beta/dev/canary в Windows (см. строки 75-78) всегда отображается это предупреждение.
-
Я только что запустил chrome.dll(dev-канал, 32-разрядный) с использованием демонстрационной версии hiew32: запустите его, переключитесь в шестнадцатеричный вид (введите ключ), найдите ExtensionDeveloperModeWarning (F7), затем нажмите F6, чтобы найти ссылающийся код, перейдите в ближайшую строку INC EAX, за которой следует RETN, нажмите F3 для редактирования, введите 90 вместо 40, который будет отображаться как NOP (no-op), save (F9).
-
Упрощенный метод, найденный @Gsx, который также работает для 64-разрядного браузера Chrome:
- запустите демон hiew32 (в режиме администратора) и откройте Chrome.dll
- переключатель в шестнадцатеричный вид (
Enter
)
- поиск ExtensionDeveloperModeWarning (
F7
)
- нажмите
F3
, чтобы отредактировать и заменить первую букву "E" любым другим символом
- сохранить (
F9
).
-
patch.BAT
script
Конечно, это будет продолжаться только до следующего обновления, чтобы любой, кто в нем нуждается, часто мог написать авто-патчер или пусковую установку, которая исправляет DLL в памяти.
Ответ 4
Не может быть отключен. Цитата: "Извините, мы знаем, что это раздражает, но вы авторы вредоносных программ..."
Ваши единственные варианты: адаптировать ваши автоматизированные тесты к этому новому поведению или загрузить нарушающий сценарий в Chrome Web Store (что можно сделать "в списке").
Ответ 5
У меня была одна и та же проблема, и я попробовал следующее:
- Установите распакованное расширение
- Отключить режим разработчика
- Перетащите файл .crx из упакованного расширения
- Закройте Chrome, а затем снова откройте его.
Несколько замечаний:
- Файл .pem должен храниться с .crx
- Не помещайте .crx и .pem в папку распакованного расширения.
Когда я снова открыл Chrome, у меня появилось всплывающее окно, в котором рассказывалось о новом упакованном расширении, поэтому я перезагрузил Chrome, чтобы посмотреть, будет ли он делать это снова, и это не так.
Я надеюсь, что это решение сработало!
Ответ 6
Установка отключенных расширений для меня не работала. Вместо этого я использовал класс Robot, чтобы нажать кнопку "Отмена".
import java.awt.Robot;
import java.awt.event.InputEvent;
public class kiosk {
public static void main(String[] args) {
// As long as you don't move the Chrome window, the Cancel button should appear here.
int x = 410;
int y = 187;
try {
Thread.sleep(7000);// can also use robot.setAutoDelay(500);
Robot robot = new Robot();
robot.mouseMove(x, y);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(3000);// can also use robot.setAutoDelay(500);
} catch (AWTException e) {
System.err.println("Error clicking Cancel.");
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Ответ 7
(В ответ Антонию Хэтчински)
Это текущий, буквально официальный способ установки политик Chrome:
https://support.google.com/chrome/a/answer/187202?hl=en
Шаблоны Windows и Linux, а также общая политика документацию для всех операционных систем можно найти здесь: https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip (Zip файл шаблонов и документации Google Chrome)
Инструкции для Windows (с моими дополнениями):
Откройте загруженный шаблон ADM или ADMX:
- Извлеките "chrome.adm" на выбранном вами языке из ранее загруженного "policy_templates.zip" (например, "policy_templates.zip\windows\adm\en-US\chrome.adm" ).
- Перейдите в меню "Пуск" > "Выполнить": gpedit.msc.
- Перейдите к политике локального компьютерa > Конфигурация компьютера/пользователя > Административные шаблоны.
- Щелкните правой кнопкой мыши "Административные шаблоны" и выберите "Добавить/удалить шаблоны".
- Добавьте диалоговое окно "chrome.adm".
- После этого в разделе "Административные шаблоны" появятся классические шаблоны административных шаблонов (ADM)/Google/Google Chrome.
- Независимо от того, добавляете ли вы шаблон в разделе "Конфигурация компьютера" или "Конфигурация пользователя", настройки будут отображаться в обоих местах, поэтому вы можете настроить Chrome на компьютере или на уровне пользователя.
Как только вы закончите с этим, перейдите к шагу 5 из ответа Антони Хэцкинса. После того, как вы добавили идентификаторы расширений, вы можете проверить, работает ли политика в Chrome, открыв chrome://policy
(выполните поиск ExtensionInstallWhitelist).
Ответ 8
Для тех, кто использует WebdriverIO, вы можете отключить расширения, создав свой клиент следующим образом:
var driver = require('webdriverio');
var client = driver.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: [
'disable-extensions'
]
}
}
});
Ответ 9
Я не уверен, что это все еще проблема для людей или нет. Тем не менее, я прочитал этот пост и несколько других и, наконец, играл с этим и смог заставить его работать на С#, используя этот код. Я получил все это из этой публикации и возможных сообщений, связанных с этим сообщением.
Я надеюсь, что это поможет, он, безусловно, решил мои проблемы в консольном приложении С#.
Использование версии 52.0.2743.116 м Chrome
Драйвер сервера Selenium 2.9
var chromeService = ChromeDriverService.CreateDefaultService(@"C:\Selenium\InstalledServerDrivers\");
var options = new ChromeOptions();
options.AddArgument("--disable-extensions");
IWebDriver driver = new ChromeDriver(chromeService, options);
driver.Url = "http://www.google.com/";
Ответ 10
Ruby-based watir-webdriver использует что-то вроде этого:
browser=Watir::Browser.new( :chrome, :switches => %w[ --disable-extensions ] )
Ответ 11
Для AngularJS и транспортир: (здесь не объяснено)
Измените conf.js, добавьте раздел capabilities
:
exports.config = {
...
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
// Prevent warning about dev tools, which breaks some tests, in Windows at least.
'args': ['--disable-extensions']
}
},
(на основе этого ответа: fooobar.com/questions/55186/... о чем-то связанном, но другом)
Ответ 12
1) Дождитесь появления всплывающего окна.
2) Откройте новую вкладку.
3) Закройте новую вкладку. Всплывающее окно исчезнет с исходной вкладки.
Небольшое расширение Chrome может автоматизировать эти шаги:
manifest.json
{
"name": "Open and close tab",
"description": "After Chrome starts, open and close a new tab.",
"version": "1.0",
"manifest_version": 2,
"permissions": ["tabs"],
"background": {
"scripts": ["background.js"],
"persistent": false
}
}
background.js
// This runs when Chrome starts up
chrome.runtime.onStartup.addListener(function() {
// Execute the inner function after a few seconds
setTimeout(function() {
// Open new tab
chrome.tabs.create({url: "about:blank"});
// Get tab ID of newly opened tab, then close the tab
chrome.tabs.query({'currentWindow': true}, function(tabs) {
var newTabId = tabs[1].id;
chrome.tabs.remove(newTabId);
});
}, 5000);
});
Установив это расширение, запустите Chrome и сразу же переключайте приложения, прежде чем появится всплывающее окно... Через несколько секунд всплывающее окно исчезнет, и вы не увидите его, когда вернетесь в Chrome.
Ответ 13
К сожалению, я не могу автоматизировать установку его в режим разработчика из-за ограничений по ширине с помощью браузера в режиме iphone. На данный момент я нашел опасное обходное решение, установите версию канала chrome. У него нет предупреждающего сообщения, но я уверен, что это вызовет у меня больше проблем в долгосрочной перспективе при возникновении проблем. Еще, надеюсь, дайте мне несколько дней, чтобы найти обходной путь.
Ответ 14
Используя селен с Python, вы запускаете драйвер с отключенными расширениями следующим образом:
from selenium import webdriver
options = webdriver.chrome.options.Options()
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options)
Всплывающее окно "Отключить расширения режима разработчика" не появится.