自上周发布chrome(34.0.1847.116)以来,我在使用watir-webdriver运行自动化测试时收到了“禁用开发人员模式扩展”。
这似乎是令人反感的延伸,但对我来说这是一个潜在危险的扩展,因为它是由chromedriver使用的。
任何已找到此修复程序的人,因为我无法回滚到以前的版本或找到旧版本的安装程序回滚到这对我的测试造成严重破坏。
用于禁用弹出窗口的official way似乎是这样的:
chrome://extensions/
,勾选'开发者模式',打'包扩展...')并通过将.crx
文件拖放到chrome://extensions
页面来安装它。
(如果您在此阶段尝试重新启动Chrome,则会显示“已禁用不支持的扩展程序”弹出窗口)然后为Win7 / 8:
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]
)nmgnihglilniboicepgjclfiageofdfj
Start
> Run
,然后输入gpedit.msc
<ENTER>
User Configuration
> Administrative Templates
> Google Chrome
> Extensions
Configure extension installation whitelist
策略Enabled
,然后单击Show...
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。
弹出窗口应该消失了。
我不确定这对人们是否仍然是一个问题。但是,我仔细阅读了这篇文章和其他几篇文章,最后讨论了这个问题,并且能够使用此代码在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/";
我正在使用Windows而且我已经尝试了很多这里提供的东西作为答案,但是弹出窗口正在不断地禁用扩展,然后我尝试了以下步骤并且现在可以正常工作:
Pack extension
按钮,然后单击下图中显示的红色矩形浏览按钮,选择您的根目录。Pack extension
按钮。parent directory
扩展的root directory
,2文件将创建[extension name].crx
和[extension name].pem
。[extension name].crx
文件拖放到chrome://扩展页面,它就会要求使用添加应用程序对话框单击Add app
并刷新它现在安装的页面。注意:在执行上述任何操作之前,请确保为扩展启用开发人员模式。如果未启用此功能,请在启用后刷新chrome:// extensions页面。
基于Ruby的watir-webdriver使用这样的东西:
browser=Watir::Browser.new( :chrome, :switches => %w[ --disable-extensions ] )
不幸的是,由于在iphone模式下使用浏览器的宽度限制,我无法自动将其设置为开发人员模式。我现在找到了一个危险的解决方法,安装chrome的dev通道版本。它没有警告信息,但我确定从长远来看,当引入问题时,它会给我带来更多问题。希望还能给我一些时间来找到解决方法。
对于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关于一些有点相关但不同的东西)
在Python中使用selenium,你可以启动带有扩展功能的驱动程序,如下所示:
from selenium import webdriver
options = webdriver.chrome.options.Options()
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options)
弹出窗口“禁用开发者模式扩展”不会弹出。
在创建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);
从Windows上的May 2015 Chrome beta/dev/canary开始(见第75-78行)始终显示此警告。
Enter
键)
搜索ExtensionDeveloperModeWarning(F7
)
按F3
编辑并用任何其他字符替换第一个字母“E”
保存(F9
)。patch.BAT
剧本当然,这只会持续到下一次更新,所以无论谁经常需要它,都可以编写一个自动修补程序或一个在内存中修补dll的启动程序。
无法禁用。引用:"Sorry, we know it is annoying, but you the malware writers..."
您唯一的选择是:使您的自动化测试适应这种新行为,或将违规脚本上传到Chrome网上应用店(可以以“不公开”的方式完成)。
(回复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中正常运行。
我遇到了同样的问题,我尝试了以下方法:
有几点需要注意:
当我重新打开Chrome时,我收到一个弹出窗口,告诉我有关新打包扩展程序的内容,因此我重新启动Chrome以查看是否会再次执行此操作,但事实并非如此。
我希望这个解决方案有效!
禁用扩展程序设置对我不起作用。相反,我使用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)等待弹出气球出现。
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时,您将看不到它。
对于使用WebdriverIO的任何人,您可以通过以下方式创建客户端来禁用扩展:
var driver = require('webdriverio');
var client = driver.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: [
'disable-extensions'
]
}
}
});