在Chrome中停用开发者模式扩展程序

自从上周发布最新版本的Chrome(34.0.1847.116)以来,在使用watir-webdriver运行自动化testing时,我一直在收到“禁用开发者模式扩展”。

这似乎是进攻的延伸,但对我来说,这是一个潜在的危险的扩展,因为它被使用的铬绿色驱动程序。

任何人已经find了解决这个问题,因为我无法回滚到以前的版本,或find一个旧版本的安装程序回滚,这是对我的testing的破坏。

在这里输入图像描述

在这里输入图像描述

在创buildchrome驱动程序的同时,使用选项来禁用它。 它的工作没有任何扩展。

使用下面的代码片段

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

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

  • 我刚刚修补chrome.dll(开发通道,32位)使用hiew32演示版本:运行它,切换到hex视图(回车键),searchExtensionDeveloperModeWarning (F7),然后按F6find引用的代码,去INC INC EAX line,后面跟着RETN,按F3进行编辑,键入90而不是40,这会被渲染为NOP(no-op),save(F9)。

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

    1. 运行hiew32演示(在pipe理模式下)并打开Chrome.dll
    2. 切换到hex视图( Enter键)
    3. searchExtensionDeveloperModeWarningF7
    4. F3编辑并用其他字符replace第一个字母“E”
    5. 保存( F9 )。
  • patch.BAT脚本

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

禁用popup窗口的官方方式似乎是这样的:

  1. 打包你的扩展,并通过拖放.crx文件到chrome://extensions页面进行安装。

    (如果您在此阶段尝试重新启动Chrome,则会看到“不支持的扩展程序已禁用”popup式窗口)

那么对于Win7 / 8:

  1. 从以下url下载Chrome组策略模板:
    dl/edgedl/chrome/policy/policy_templates.zip
  2. [zip]\windows\admx\chrome.admxc:\windows\policydefinitions
  3. [zip]\windows\admx\[yourlanguage]\chrome.adml
    c:\windows\policydefinitions\[yourlanguage]\chrome.adml (不是c:\windows\[yourlanguage]
  4. 在Chrome中,转到扩展页面( chrome:// extensions )
  5. 检查顶部的开发者模式checkbox
  6. 向下滚动禁用的分机列表,并记下要启用的分机号。 例如,LogMeIn是ID: nmgnihglilniboicepgjclfiageofdfj
  7. 单击Start > Run ,然后键入gpedit.msc <ENTER>
  8. 展开User Configuration > Administrative Templates > Google Chrome > Extensions
  9. 双击打开Configure extension installation whitelist策略
  10. select已Enabled ,然后单击Show...
  11. 在列表中input您在步骤7中logging的分机号码
  12. 点击OK并重新启动Chrome

而已!

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

您唯一的select是:使您的自动testing适应这种新行为,或者将违规脚本上传到Chrome网上应用店(可以以“不公开”的方式进行)。

我遭受了同样的问题,我尝试了以下方法:

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

有几件事要注意:

  • .pem文件应该保存在.crx中
  • 不要将.crx和.pem放在解压扩展的文件夹中。

当我重新打开Chrome浏览器时,我收到一个popup窗口,告诉我有关新打包的扩展程序,所以我重新启动了Chrome浏览器,看看它是否会再次执行,而不是。

我希望这个解决scheme工作!

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

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

禁用扩展设置不适用于我。 相反,我使用Robot类来单击取消button。

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

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

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

我不确定这是否仍然是人们的问题。 不过,我读了这篇文章和其他几个人,终于玩了这个,并能够使用这个代码在C#中工作。 我从这篇文章中得到了所有的信息,可能有一些post链接到这篇文章。

我希望这有助于,它肯定解决了我在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/"; 

对于AngularJS和量angular器:(这里没有解释)

编辑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关于一些有点相关,但不同)

(在回答安东尼Hatchkins)

这是设定Chrome政策的现行官方方式: https : //support.google.com/chrome/a/answer/187202?hl = zh_CN

Windows和Linux模板以及所有操作系统的常用策略文档可以在这里find: https : //dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip (谷歌浏览器模板的Zip文件和文件)

Windows说明(附加内容):

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

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

一旦你完成了这个,继续从安东尼Hatchkins的答案的第5步。 添加扩展程序ID后,您可以通过打开chrome://policy (searchExtensionInstallWhitelist )来检查策略是否在Chrome中运行。

不幸的是我不能自动化设置为开发人员模式,因为在iPhone模式下使用浏览器的宽度限制。 我现在发现了一个危险的解决方法,安装chrome的开发通道版本。 它没有这个警告信息,但是当问题出现的时候,我会确定这会给我带来更多的问题。 仍然会希望给我几天find一个解决方法。

在Python中使用selenium,可以像这样启用禁用扩展的驱动程序:

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

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