禁用开发人员模式扩展程序在Chrome中弹出


166

自上周最新版的chrome(34.0.1847.116)起,使用watir-webdriver运行自动化测试时,我一直收到“禁用开发人员模式扩展名”。

这似乎是令人反感的扩展名,但对于chromedriver而言,这对我来说没有潜在危险。

任何已找到此修复程序的人,因为我无法回滚到以前的版本或找不到要回滚到的旧版本的安装程序,这正在破坏我的测试。

在此处输入图片说明

在此处输入图片说明


使用外部点击杀死弹出窗口:stackoverflow.com/a/29376532/285594


@ artdias90不再起作用,他也不想再进行更新(在保持2年后可以理解)。
BadAtPHP

弹出窗口显示后,使用机器人类型按esc按钮。 Robot robot; try { robot = new Robot(); robot.keyPress(KeyEvent.VK_ENTER); // confirm by pressing Enter in the end robot.keyRelease(KeyEvent.VK_ENTER); } catch (AWTException e) { printStackTraceToString(e); }
阿卜杜拉·努鲁姆

2
旁注:Vivaldi浏览器与大多数chrome扩展程序兼容,并且不会发出此警告
用户

Answers:


79

禁用弹出窗口的官方方法是:

  1. 打包您的扩展程序:转到chrome://extensions,检查Developer mode并单击Pack extension

  2. 通过将.crx文件拖放到chrome://extensions页面中来安装扩展。

如果您此时尝试重新启动Chrome,将会弹出“禁用的扩展程序已禁用”的弹出窗口。

然后对于Windows 7或Windows 8:

  1. 在此处下载Chrome组策略模板
  2. 复制[zip]\windows\admx\chrome.admxc:\windows\policydefinitions
  3. 复制[zip]\windows\admx\[yourlanguage]\chrome.admlc:\windows\policydefinitions\[yourlanguage]\chrome.adml(不是c:\windows\[yourlanguage]
  4. 在Chrome中,转到“扩展程序”页面: chrome://extensions
  5. 检查一下 Developer Mode
  6. 向下滚动禁用的扩展列表,并记下要启用的扩展的ID。
  7. 单击Start> Run,键入gpedit.msc并单击enter
  8. 点击User Configuration> Administrative Templates> Google Chrome>Extensions
  9. 双击Configure extension installation whitelist政策
  10. 选择Enabled,然后单击Show
  11. 在列表中,输入您在步骤7中记下的扩展的ID。
  12. 点击OK并重新启动Chrome。

而已!

编辑:自2018年7月起,此方法不再有效:似乎Google已停止兑现“白名单”。

编辑2:自2018年12月起,此方法适用于Chrome Version 69.0.3497.100 (Official Build) (64-bit)

  1. 临时启用Developer modechrome://extensions

  2. 使用卸载导致弹出窗口的扩展Load unpacked

  3. 点击Pack extension,找到并选择包含扩展文件的文件夹。如果没有,请不要输入私钥文件。

  4. 点击Pack extension。一个.crx.pem文件将扩展的根目录附近创建。使用.crx文件安装扩展名,并确保.pem文件安全。

  5. 将已.crx安装的扩展程序ID 复制到白名单,然后重新启动Chrome。

弹出窗口应该消失了。


4
@Ryan这些策略模板的主页似乎是chromium.org/administrators/policy-templates。该站点会定期更新(最新更新时间为54分钟)。我在6月24日使用了此方法,并且该配置适用于今天的最新Chrome版本。如果您希望将“不能禁用”作为正式版本-这是您的选择;)
Antony Hatchkins

1
我通过Selenium Chrome驱动程序选项解决了该问题,请参见此处
kriegaex

1
@Antony Hatchkins我使用了来自此答案stackoverflow.com/questions/30287907 / ...的更新代码,它再次开始工作。感谢您的回应!
钢管制造商

1
我的Windows是Home Premium,我没有gpedit.msc:/
Lucas Bustamante

1
在Chrome 58.0.3029.81,Win 7 x64中为我工作:)希望这种解决方案能够持续!
Jimadine

36

创建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);

35
我们应该在哪里写呢?
易卜拉欣Özbölük

将其添加到我的量角器conf.js文件args列表中,并且可以正常工作。非常感谢:)
ghiscoding '16

2
这很棒。在C#中,代码为:options.AddArgument("--disable-extensions");
kirbycope 2016年

4
今天,我不得不使用options.AddArguments("chrome.switches", "--disable-extensions --disable-extensions-file-access-check --disable-extensions-http-throttling");而不仅仅是`--disable-extensions。我认为可以省略其他开关之一,但不能同时省略。
安德斯·林登

14
您能为凡人解释一下吗?那段剧本是什么,或者放在哪里...
T.Todua

23

2015年5月起,Windows上的Chrome beta / dev / canary(请参阅第75-78行)始终显示此警告。

  • 我刚刚使用hiew32演示版修补了chrome.dll(开发通道,32位):运行它,切换到十六进制视图(Enter键),搜索ExtensionDeveloperModeWarning(F7),然后按F6查找引用代码,转到附近的INC EAX线,然后是RETN,按F3键进行编辑,键入90而不是40,它将显示为NOP(无操作),保存(F9)。

  • @Gsx找到的简化方法,该方法也适用于64位Chrome开发者:

    1. 运行hiew32演示(以管理员模式)并打开Chrome.dll
    2. 切换到十六进制视图(Enter键)
    3. 搜索ExtensionDeveloperModeWarningF7
    4. F3编辑并用其他任何字符替换第一个字母“ E”
    5. 保存(F9)。
  • patch.BAT 脚本

当然,这只会持续到下一次更新,因此,经常需要它的人可能会编写自动修补程序或启动程序来修补内存中的dll。


嗨,我正在尝试用hiew32demo对其进行修补,但我无法这样做。当我打开chrome.dll时,我得到了Hiew Demo doesn't support NE/LX/LE/NLM/ELF/PE64 files,但是我可以跳过该警告。然后,我使用F4更改模式以解码和搜索ExtensionDeveloperMo,因为_ExtensionDeveloperModeWarning _不适合使用。找到它后,我按F6键,但我得到了Target not found。你可以帮帮我吗?
Gsx

1
我在chrome.dll中找不到'4578 7465 6e73 696f 6e44 6576'('ExtensionDev')。这种方法仍然有效吗?
艾默生

Gsx,我的方法适用于开发人员通道上的32位Chrome。
wOxxOm 2015年

2
艾默生(Emerson),这一变化仅在一周前就已进入开发渠道,因此它不在稳定状态。您必须通过分析源代码的先前版本来找到相关的位置。
wOxxOm 2015年

1
@wOxxOm也失败了,但是我发现了一种奇怪的XD方式。我搜索了ExtensionDeveloperMo,并将其更改为EXtensionDeveloperMo,这似乎可行。
Gsx

7

不能被禁用。引用:“对不起,我们知道这很烦人,但是您是恶意软件编写者...”

您唯一的选择是:使自动化测试适应此新行为,或将有问题的脚本上载到Chrome网上应用店(可以“不公开”的方式进行)。


66
我无法在网上商店中使用扩展程序/应用程序有数千个原因,我需要在本地运行它。这是Google Chromium小组的非常恶意的实现,非常有恶意,有人应该与Chromium进行斗争并将其修复。可怕的问题,严重不赞赏。对这个问题的所有答案都只是杀死从事亭子项目的人。噩梦。请告知/敲除/与铬社区辩论以解决此问题。

4
直到您不再使用Chrome开发任何东西时,这只是时间问题:)
Vinz 2016年

1
是的,这是因为存在恶意软件...我们并不是想惹恼那些使用我们从商店阻止的扩展程序的人,例如Dissenter ...
Chris_F,

我需要添加自定义清单密钥,并且无法上传到网上商店。
水果

5

(回复安东尼·哈奇金斯)

这是设置Chrome政策的当前官方方法,网址为https : //support.google.com/chrome/a/answer/187202?hl=zh_CN

您可以在以下位置找到Windows和Linux模板以及所有操作系统的通用策略文档:https : //dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip(Google Chrome模板的ZIP文件和文档)

Windows说明(以及我的补充):

打开您下载的ADM或ADMX模板:

  • 从先前下载的“ policy_templates.zip”中以您选择的语言提取“ chrome.adm”(例如“ policy_templates.zip \ windows \ adm \ en-US \ chrome.adm”)。
  • 导航到“开始”>“运行”:gpedit.msc。
  • 导航到本地计算机策略>计算机/ 用户配置>管理模板。
  • 右键单击“管理模板”,然后选择“添加/删除模板”。
  • 通过对话框添加“ chrome.adm”模板。
  • 完成后,经典管理模板(ADM)/ Google / Google Chrome文件夹将显示在管理模板下。
  • 无论您是在“计算机配置”还是“用户配置”下添加模板,设置都会同时出现在两个位置,因此您可以在计算机或用户级别配置Chrome。

完成此操作后,请继续执行Antony Hatchkins答案的第5步。添加扩展ID后,您可以通过打开chrome://policy(搜索ExtensionInstallWhitelist)来检查该策略在Chrome中是否正常运行。


谢谢豹。通过对话框添加了“ chrome.adm”模板,并出现此错误:[strings] sectin中的以下条目太长,已被截断。接下来是西里尔字母的页面?
史蒂夫·斯台

使用@自动通知其他用户您的帖子(例如@Panther)。
安东尼·哈奇金斯

@SteveStaple对不起,但是我不知道是什么原因引起了这种问题。:(我不是专家,只是按照我链接的页面上的说明进行。幸运的是它对我
Panther

4

禁用扩展名设置不适用于我。相反,我使用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();
    }
  }
}

该回答被低估了,因为它可以适应于自动执行其他令人讨厌的GUI按钮单击任务。
D亚当斯

@momomo显然,可以在配置中设置它,但这只是示例代码。
史蒂夫·史密斯,


3

我遇到了同样的问题,并且尝试了以下操作:

  1. 打包解压的扩展
  2. 关闭开发人员模式
  3. 从压缩的扩展名中拖放.crx文件
  4. 关闭Chrome,然后再次将其打开。

注意事项:

  • .pem文件应与.crx一起保存
  • 不要将.crx和.pem放在解压后的扩展名文件夹中。

当我重新打开Chrome时,出现一个弹出窗口,告诉我有关新打包的扩展程序的信息,因此我重新启动了Chrome,以查看它是否可以再次执行此操作,但事实并非如此。

我希望此解决方案有效!


使用您的方法后,出现“不支持的扩展弹出窗口”。有关如何禁用它的详细信息,请参见我的答案
Antony Hatchkins '16

我收到“无法从该网站添加应用,扩展程序和用户脚本”。
johny为什么

2

根据安东尼·哈奇金斯的回答:

官方的方法来禁用弹出似乎是这样的:

  1. 打包您的扩展名(chrome://extensions/,在“开发人员模式”中打钩,单击“打包扩展名...”),然后通过将.crx文件拖放到chrome://extensions页面中进行安装。

    (由于该扩展程序不是来自Chrome网上应用店,因此默认情况下将被禁用。)

然后对于Windows:

  1. 在Chrome中,转到“扩展程序”页面(chrome:// extensions
  2. 选中顶部的开发人员模式复选框
  3. 向下滚动禁用的扩展列表,并记下要启用的扩展的ID。例如,LogMeIn是ID:nmgnihglilniboicepgjclfiageofdfj
  4. 点击Start> Run,然后输入regedit <ENTER>
  5. 在键下HKLM\Software\Policies\Google\Chrome\ExtensionInstallWhitelist(如果不存在,请创建),为每个要使用顺序名称(索引)启用的扩展名创建一个新字符串,例如1、2,...
  6. 以任何顺序输入扩展名ID作为字符串值。例如,有一个带有名称1和值的字符串nmgnihglilniboicepgjclfiageofdfj
  7. 重新启动Chrome

而已!

注意:更新列入白名单的扩展程序时,无需执行相同的步骤,因为扩展程序的ID不会更改。


拖放.crx文件只会弹出一个save as window,并且不会安装它。Chrome版本80.0.3987.163。
xyz

1
找不到边缘铬的注册表项
JinSnow

@xyz拖放.crx文件将安装版本81.0.4044.122的扩展。@JinSnow看看微软的边缘-政策- ExtensionInstallAllowlist
布拉克斛

1

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时您将看不到它。


(奖金提示1)使用Selenium时,您可以立即打开一个新窗口,等待新窗口中的弹出窗口,然后关闭新窗口以关闭该弹出窗口。stackoverflow.com/a/36507179/3345375
jkdev

2
(奖金提示2)您也可以尝试执行以下操作:添加标志--enable-automation以避免弹出窗口。
jkdev

2
这对我不起作用。赢10,Chrome最新。按照步骤操作后,弹出窗口仍然存在。
freginold

@freginold为了弄清楚什么有效,我不得不尝试各种打开和关闭选项卡/窗口的顺序。对于其他操作系统和浏览器版本,顺序可能有所不同。
jkdev

@jkdev命令行开关--enable-automation有其令人讨厌的副作用:a div出现在每页的顶部,直到被关闭(然后它停止出现)。可以通过在首次出现时按ESC来取消开发人员模式弹出窗口。无论哪种情况都令人讨厌!
乔治,

0

我正在Windows上工作,并且尝试了此处提供的许多操作作为答案,但是Pop up不断禁用该扩展,然后我尝试了以下步骤,现在可以工作:

  1. 转到chrome:// extensions页面,然后单击Pack extension按钮,然后单击下图中显示的红色矩形浏览按钮,选择扩展的根目录。

浏览扩展的根目录

  1. 选择根目录后,单击Pack extension下图中以红色圆圈显示的按钮。

在此处输入图片说明

  1. 现在检查parent directory您选择root directory的扩展名,将创建2个文件[extension name].crx[extension name].pem

  2. 现在,只需将[extension name].crx文件拖放到chrome:// extensions页面上,它将要求使用添加应用程序对话框单击Add app并刷新现在安装的页面。

注意:在执行上述操作之前,请确保启用扩展程序的开发人员模式。如果未启用此功能,请在启用后刷新chrome:// extensions页面。


1
解压缩的扩展程序与开发人员模式警告一起使用。但是使用crx时,该扩展名始终被禁用。google要求扩展程序必须在网上商店中发布并从那里安装。
gp。

Chrome不允许用户安装打包的扩展程序,并说打包无效:CRX_REQUIRED_PROOF_MISSING。
Harshit Juneja '19

@HarshitJuneja可能是您必须将扩展ID列入白名单,然后重新启动chrome。
Haritsinh Gohil

0

这个问题非常古老,但是当您搜索尝试禁用此弹出消息的方法时,它仍然是google上的最高结果,因为扩展开发人员尚未将其扩展添加到chrome存储中,因此无权访问组策略到他们的操作系统,并且未使用chrome dev构建。在这种情况下,目前尚无官方解决方案,因此我将在此处发布一种“ hacky”解决方案。

这种方法使我们立即创建一个新窗口并关闭旧窗口。弹出窗口与原始窗口相关联,因此在正常使用情况下,由于该窗口关闭,因此从不显示弹出窗口。

这里最简单的解决方案是创建一个新窗口,然后关闭所有不在回调中刚刚创建的窗口的窗口:

chrome.windows.create({
    type: 'normal',
    focused: true,
    state: 'maximized'
}, function(window) {
    chrome.windows.getAll(function(windows) {
        for (var i = 0; i < windows.length; i++) {
            if (windows[i].id != window.id) {
                chrome.windows.remove(windows[i].id);
            }
        }
    });
});

另外,我们可以检测到该扩展的安装方式,并且仅在开发安装时才运行此代码(尽管最好将其从发行代码中完全删除)。首先,我们为chrome.management.getSelf调用创建回调函数,该函数允许我们检查扩展程序的安装类型,该函数基本上只是将上述代码包装在if语句中:

function suppress_dev_warning(info) {
    if (info.installType == "development") {
        chrome.windows.create({
            type: 'normal',
            focused: true,
            state: 'maximized'
        }, function(window) {
            chrome.windows.getAll(function(windows) {
                for (var i = 0; i < windows.length; i++) {
                    if (windows[i].id != window.id) {
                        chrome.windows.remove(windows[i].id);
                    }
                }
            });
        });
    }
}

接下来,我们使用回调函数调用chrome.management.getSelf:

chrome.management.getSelf(suppress_dev_warning);

此方法有一些警告,即我们假设一个持久的后台页面,这意味着在首次打开chrome时,该代码仅运行一次。第二个问题是,如果我们从chrome:// extensions页面重新加载/刷新扩展名,它将关闭当前打开的所有窗口,以我的经验,有时仍会显示警告。可以通过检查是否有任何选项卡对“ chrome:// extensions”打开并且不执行来避免这种特殊情况。




-1

基于Ruby的watir-webdriver使用如下代码:

browser=Watir::Browser.new( :chrome, :switches => %w[ --disable-extensions ] )

-1

对于使用WebdriverIO的任何人,您都可以通过创建客户端来禁用扩展,如下所示:

var driver = require('webdriverio');
var client = driver.remote({
    desiredCapabilities: {
        browserName: 'chrome',
        chromeOptions: {
            args: [
                'disable-extensions'
            ]
        }
    }
});

OP未使用WebDriverIO。此外,OP要求禁用弹出窗口,但您改为禁用扩展。
Cardin Lee JH

-1

我不确定这是否仍然是人们的问题。但是,我通读了这篇文章和其他几篇文章,最后进行了尝试,并使用此代码使其能够在C#中工作。我从这篇文章以及可能链接到该帖子的一些帖子中获得了所有信息。

希望对您有所帮助,它肯定解决了C#控制台应用程序中的问题。

使用版本52.0.2743.116 m的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/";

像魅力一样工作(C#WebDriver 2.53.1.0,ChromeDriver 2.20.353145,Win7 x64)
Alessandro Da Rugna

-1

现在,我们需要使用以下命令来处理它-

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("chrome.switches", "--disable-extensions --disable-extensions-file-access-check --disable-extensions-http-throttling");

除了--disable-extensions,我们还需要添加--disable-extensions-file-access-check(和/或)--disable-extensions-http-throttlingChrome开关。


-2

不幸的是,由于在iPhone模式下使用浏览器的宽度受到限制,我无法将其自动设置为开发人员模式。我现在发现了一个危险的解决方法,请安装chrome的dev通道版本。它没有警告消息,但是从长远来看,肯定会在引入问题时给我带来更多问题。仍然希望我能花几天时间找到解决方法。


您也可以使用beta频道。它比dev更稳定。同时,它具有比稳定频道更多的功能。
罗布W

1
@RobW asargent说,弹出式窗口也存在于beta通道中。错了吗 code.google.com/p/chromium/issues/detail?id=337734#c2
rsanchez 2014年

1
@rsanchez刚刚在Windows上尝试过,您是正确的。感谢您的更正。我正在使用Linux,所以我没有遇到此问题(:
Rob W


@RobW您可以发布有关该错误的更新吗?(是Restrict-AddIssueComment-EditIssue
Xan 2015年

-4

在Python中使用selenium时,您可以使用以下禁用扩展名的方式启动驱动程序:

from selenium import webdriver
options = webdriver.chrome.options.Options()
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options)

弹出的“禁用开发人员模式扩展”将不会弹出。


OP询问如何禁用弹出窗口,而是决定禁用其扩展。:/
Cardin Lee JH
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.