禁用Chrome中的开发者模式扩展程序

问题描述 投票:137回答:15

自上周发布chrome(34.0.1847.116)以来,我在使用watir-webdriver运行自动化测试时收到了“禁用开发人员模式扩展”。

这似乎是令人反感的延伸,但对我来说这是一个潜在危险的扩展,因为它是由chromedriver使用的。

任何已找到此修复程序的人,因为我无法回滚到以前的版本或找到旧版本的安装程序回滚到这对我的测试造成严重破坏。

google-chrome google-chrome-extension watir-webdriver selenium-chromedriver
15个回答
53
投票

用于禁用弹出窗口的official way似乎是这样的:

  1. 打包你的扩展(chrome://extensions/,勾选'开发者模式',打'包扩展...')并通过将.crx文件拖放到chrome://extensions页面来安装它。 (如果您在此阶段尝试重新启动Chrome,则会显示“已禁用不支持的扩展程序”弹出窗口)

然后为Win7 / 8:

  1. 从以下位置下载Chrome组策略模板: http://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip
  2. [zip]\windows\admx\chrome.admx复制到c:\windows\policydefinitions
  3. [zip]\windows\admx\[yourlanguage]\chrome.adml复制到 c:\windows\policydefinitions\[yourlanguage]\chrome.adml(不是c:\windows\[yourlanguage]
  4. 在Chrome中,转到“扩展程序”页面(chrome://extensions
  5. 检查顶部的“开发者模式”复选框
  6. 向下滚动已禁用的扩展名列表,并记下要启用的扩展的ID。例如,LogMeIn是ID:nmgnihglilniboicepgjclfiageofdfj
  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月,这种方法已不再适用:似乎谷歌已停止尊重“白名单”

编辑:截至10/16/2018,这种方法工作。 (Chrome版本69.0.3497.100(官方版本)(64位))

1.暂时在chrome:// extensions /中启用开发人员模式

2.使用“加载解压缩”卸载您安装的扩展(准确地说是导致弹出窗口的扩展名)。

3.单击包扩展并输入文件的根目录(将扩展文件放在单个文件夹/每个错误导致扩展名的一个文件夹中)如果没有,请不要输入私钥文件。

4.单击包扩展,将在扩展的根目录附近创建.crx和.pem文件。使用crx文件安装扩展程序并保持pem文件的安全(如果删除它或出现错误,你可以随时重新打包扩展名)。

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

弹出窗口应该消失了。


0
投票

我不确定这对人们是否仍然是一个问题。但是,我仔细阅读了这篇文章和其他几篇文章,最后讨论了这个问题,并且能够使用此代码在C#中使用它。我从这篇文章中得到了所有这些内容以及与此帖子相关的一些帖子。

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

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

0
投票

我正在使用Windows而且我已经尝试了很多这里提供的东西作为答案,但是弹出窗口正在不断地禁用扩展,然后我尝试了以下步骤并且现在可以正常工作:

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

browse root directory of extension

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

enter image description here

  1. 现在检查你选择的parent directory扩展的root directory,2文件将创建[extension name].crx[extension name].pem
  2. 现在只需将[extension name].crx文件拖放到chrome://扩展页面,它就会要求使用添加应用程序对话框单击Add app并刷新它现在安装的页面。

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


-1
投票

基于Ruby的watir-webdriver使用这样的东西:

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

-2
投票

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


-2
投票

对于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']
        }
    },

(基于这个答案:https://stackoverflow.com/a/33113360/694469关于一些有点相关但不同的东西)


-4
投票

在Python中使用selenium,你可以启动带有扩展功能的驱动程序,如下所示:

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

弹出窗口“禁用开发者模式扩展”不会弹出。


35
投票

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

21
投票

从Windows上的May 2015 Chrome beta/dev/canary开始(见第75-78行)始终显示此警告。

  • 我刚刚使用hiew32演示版修补了chrome.dll(开发频道,32位):运行它,切换到十六进制视图(回车键),搜索ExtensionDeveloperModeWarning(F7)然后按F6查找引用代码,转到在附近的INC EAX行,然后是RETN,按F3进行编辑,输入90而不是40,它将被渲染为NOP(无操作),保存(F9)。
  • @Gsx发现的简化方法,也适用于64位Chrome开发人员: 运行hiew32演示(在管理员模式下)并打开Chrome.dll 切换到十六进制视图(Enter键) 搜索ExtensionDeveloperModeWarning(F7) 按F3编辑并用任何其他字符替换第一个字母“E” 保存(F9)。
  • patch.BAT剧本

当然,这只会持续到下一次更新,所以无论谁经常需要它,都可以编写一个自动修补程序或一个在内存中修补dll的启动程序。


8
投票

无法禁用。引用:"Sorry, we know it is annoying, but you the malware writers..."

您唯一的选择是:使您的自动化测试适应这种新行为,或将违规脚本上传到Chrome网上应用店(可以以“不公开”的方式完成)。


4
投票

(回复Antony Hatchkins)

这是设置Chrome政策的当前官方方式:https://support.google.com/chrome/a/answer/187202?hl=en

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

Windows说明(附加说明):

打开下载的ADM或ADMX模板:

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

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


3
投票

我遇到了同样的问题,我尝试了以下方法:

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

有几点需要注意:

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

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

我希望这个解决方案有效!


2
投票

禁用扩展程序设置对我不起作用。相反,我使用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();
    }
  }
}

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


0
投票

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

var driver = require('webdriverio');
var client = driver.remote({
    desiredCapabilities: {
        browserName: 'chrome',
        chromeOptions: {
            args: [
                'disable-extensions'
            ]
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.