在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开发者:
- 运行hiew32演示(在pipe理模式下)并打开Chrome.dll
- 切换到hex视图(
Enter
键) - searchExtensionDeveloperModeWarning (
F7
) - 按
F3
编辑并用其他字符replace第一个字母“E” - 保存(
F9
)。
-
patch.BAT
脚本
当然,这只会持续到下一次更新,所以经常需要它的人可能会写一个自动补丁程序或启动程序,将dll修补到内存中。
禁用popup窗口的官方方式似乎是这样的:
-
打包你的扩展,并通过拖放
.crx
文件到chrome://extensions
页面进行安装。(如果您在此阶段尝试重新启动Chrome,则会看到“不支持的扩展程序已禁用”popup式窗口)
那么对于Win7 / 8:
- 从以下url下载Chrome组策略模板:
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 )
- 检查顶部的开发者模式checkbox
- 向下滚动禁用的分机列表,并记下要启用的分机号。 例如,LogMeIn是ID:
nmgnihglilniboicepgjclfiageofdfj
- 单击
Start
>Run
,然后键入gpedit.msc
<ENTER>
- 展开
User Configuration
>Administrative Templates
>Google Chrome
>Extensions
- 双击打开
Configure extension installation whitelist
策略 - select已
Enabled
,然后单击Show...
- 在列表中input您在步骤7中logging的分机号码
- 点击
OK
并重新启动Chrome
而已!
不能被禁用。 引用: “对不起,我们知道这很烦人,但你是恶意软件编写者…”
您唯一的select是:使您的自动testing适应这种新行为,或者将违规脚本上传到Chrome网上应用店(可以以“不公开”的方式进行)。
我遭受了同样的问题,我尝试了以下方法:
- 打包解包的扩展名
- closures开发者模式
- 从打包的扩展中拖放.crx文件
- 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。